Machine Learning avec PySpark
Andrew Collier
Data Scientist, Fathom Data






cars.select('mass', 'cyl', 'consumption').show(5)
+------+---+-----------+
| mass|cyl|consumption|
+------+---+-----------+
|1451.0| 6| 9.05|
|1129.0| 4| 6.53|
|1399.0| 4| 7.84|
|1147.0| 4| 7.84|
|1111.0| 4| 9.05|
+------+---+-----------+
Un objet pour construire le modèle. Il peut s'agir d'un pipeline.
regression = LinearRegression(labelCol='consumption')
Un objet pour évaluer la performance du modèle.
evaluator = RegressionEvaluator(labelCol='consumption')
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
Une grille de valeurs de paramètres (vide pour l'instant).
params = ParamGridBuilder().build()
L'objet de validation croisée.
cv = CrossValidator(estimator=regression,
estimatorParamMaps=params,
evaluator=evaluator,
numFolds=10, seed=13)
Appliquer la validation croisée aux données d'entraînement.
cv = cv.fit(cars_train)
Quelle est la RMSE moyenne sur les plis ?
cv.avgMetrics
[0.800663722151572]
Faire des prédictions sur les données de test initiales.
evaluator.evaluate(cv.transform(cars_test))
# RMSE sur les données de test
0.745974203928479
Beaucoup plus petite que la RMSE validée croisée.
# RMSE de la validation croisée
0.800663722151572
Une simple division entraînement-test aurait donné une vision trop optimiste de la performance du modèle.
Machine Learning avec PySpark