Machine Learning with 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|
+------+---+-----------+
ออบเจกต์สำหรับสร้างโมเดล ซึ่งอาจเป็น pipeline ก็ได้
regression = LinearRegression(labelCol='consumption')
ออบเจกต์สำหรับประเมินประสิทธิภาพโมเดล
evaluator = RegressionEvaluator(labelCol='consumption')
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
กริดของค่าพารามิเตอร์ (ว่างไว้ก่อน)
params = ParamGridBuilder().build()
ออบเจกต์ cross-validation
cv = CrossValidator(estimator=regression,
estimatorParamMaps=params,
evaluator=evaluator,
numFolds=10, seed=13)
นำ cross-validation ไปใช้กับข้อมูลฝึก
cv = cv.fit(cars_train)
ค่าเฉลี่ย RMSE ใน fold ต่าง ๆ เป็นเท่าไร?
cv.avgMetrics
[0.800663722151572]
ทำนายผลบนข้อมูลทดสอบชุดเดิม
evaluator.evaluate(cv.transform(cars_test))
# RMSE on testing data
0.745974203928479
น้อยกว่าค่า RMSE จาก cross-validation มาก
# RMSE from cross-validation
0.800663722151572
การแบ่ง train-test แบบธรรมดาอาจทำให้ประเมินประสิทธิภาพโมเดลดีเกินจริง
Machine Learning with PySpark