Cross-validation กับ pipeline โมเดลพยากรณ์ระยะเวลาเที่ยวบิน
โมเดลที่ผ่าน cross-validation ที่สร้างไปก่อนหน้านี้ยังเรียบง่าย โดยใช้เพียง km เพื่อพยากรณ์ duration
อีกหนึ่งตัวแปรที่สำคัญต่อระยะเวลาของเที่ยวบินคือสนามบินต้นทาง เนื่องจากเที่ยวบินจากสนามบินที่มีผู้ใช้งานหนาแน่นมักใช้เวลานานกว่าในการขึ้นบิน มาดูกันว่าการเพิ่มตัวแปรนี้จะช่วยให้โมเดลดีขึ้นหรือไม่
ในแบบฝึกหัดนี้จะเพิ่มฟิลด์ org เข้าไปในโมเดล แต่เนื่องจาก org เป็นข้อมูลเชิงหมวดหมู่ จึงต้องผ่านขั้นตอนเพิ่มเติมก่อนนำไปใช้งาน ได้แก่ การแปลงเป็น index และการทำ one-hot encoding จากนั้นจึงนำไปรวมกับ km เพื่อสร้างโมเดล regression เราจะรวบรวมขั้นตอนเหล่านี้ไว้ใน pipeline
ออบเจ็กต์ต่อไปนี้ถูกสร้างไว้แล้ว:
params— parameter grid เปล่าevaluator— regression evaluatorregression— ออบเจ็กต์LinearRegressionที่กำหนดlabelCol='duration'
คลาส StringIndexer, OneHotEncoder, VectorAssembler และ CrossValidator ถูก import ไว้เรียบร้อยแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning with PySpark
คำแนะนำการฝึกหัด
- สร้าง string indexer โดยระบุฟิลด์ input และ output เป็น
orgและorg_idx - สร้าง one-hot encoder โดยตั้งชื่อฟิลด์ output ว่า
org_dummy - รวมฟิลด์
kmและorg_dummyเข้าด้วยกันเป็นฟิลด์เดียวชื่อfeatures - สร้าง pipeline โดยใช้ขั้นตอนต่อไปนี้: string indexer, one-hot encoder, assembler และ linear regression จากนั้นนำ pipeline นี้ไปสร้าง cross-validator
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create an indexer for the org field
indexer = ____(____, ____)
# Create an one-hot encoder for the indexed org field
onehot = ____(____, ____)
# Assemble the km and one-hot encoded fields
assembler = ____(____, ____)
# Create a pipeline and cross-validator.
pipeline = ____(stages=[____, ____, ____, ____])
cv = ____(estimator=____,
estimatorParamMaps=____,
evaluator=____)