PySpark के साथ Machine Learning
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|
+------+---+-----------+
इंटरसेप्ट के साथ linear regression. ट्रेनिंग डेटा पर फिट करें.
regression = LinearRegression(labelCol='consumption', fitIntercept=True)
regression = regression.fit(cars_train)
टेस्टिंग डेटा पर RMSE निकालें.
evaluator.evaluate(regression.transform(cars_test))
# इंटरसेप्ट वाले मॉडल का RMSE
0.745974203928479
इंटरसेप्ट के बिना linear regression. ट्रेनिंग डेटा पर फिट करें.
regression = LinearRegression(labelCol='consumption', fitIntercept=False)
regression = regression.fit(cars_train)
टेस्टिंग डेटा पर RMSE निकालें.
# इंटरसेप्ट के बिना मॉडल (दूसरा मॉडल) का RMSE
0.852819012439
# इंटरसेप्ट वाले मॉडल (पहला मॉडल) का RMSE
0.745974203928
from pyspark.ml.tuning import ParamGridBuilder # Create a parameter grid builder params = ParamGridBuilder()# Add grid points params = params.addGrid(regression.fitIntercept, [True, False])# Construct the grid params = params.build()# How many models? print('Number of models to be tested: ', len(params))
Number of models to be tested: 2
Cross-validator बनाएँ और ट्रेनिंग डेटा पर फिट करें.
cv = CrossValidator(estimator=regression,
estimatorParamMaps=params,
evaluator=evaluator)
cv = cv.setNumFolds(10).setSeed(13).fit(cars_train)
हर मॉडल का cross-validated RMSE क्या है?
cv.avgMetrics
[0.800663722151, 0.907977823182]
# Access the best model
cv.bestModel
या बस cross-validator ऑब्जेक्ट का उपयोग करें.
predictions = cv.transform(cars_test)
सर्वोत्तम पैरामीटर निकालें.
cv.bestModel.explainParam('fitIntercept')
'fitIntercept: whether to fit an intercept term (default: True, current: True)'
params = ParamGridBuilder() \ .addGrid(regression.fitIntercept, [True, False]) \.addGrid(regression.regParam, [0.001, 0.01, 0.1, 1, 10]) \.addGrid(regression.elasticNetParam, [0, 0.25, 0.5, 0.75, 1]) \ .build()
अब कितने मॉडल?
print ('Number of models to be tested: ', len(params))
Number of models to be tested: 50
PySpark के साथ Machine Learning