แชร์ผ่าน


บทช่วยสอนส่วนที่ 4: ดําเนินการให้คะแนนแบบกลุ่มและบันทึกการทํานายไปยังเลคเฮ้าส์

ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีการนําเข้าแบบจําลอง LightGBMClassifier ที่ลงทะเบียนไว้ซึ่งได้รับการฝึกฝนในส่วนที่ 3 โดยใช้รีจิสทรีแบบจําลอง Microsoft Fabric MLflow และดําเนินการคาดการณ์แบบชุดงานบนชุดข้อมูลทดสอบที่โหลดจากเลคเฮ้าส์

Microsoft Fabric ช่วยให้คุณสามารถดําเนินการแบบจําลองการเรียนรู้ของเครื่องด้วยฟังก์ชันที่ปรับขนาดได้ที่เรียกว่า PREDICT ซึ่งสนับสนุนการให้คะแนนกลุ่มในกลไกการคํานวณใด ๆ คุณสามารถสร้างการคาดการณ์แบบกลุ่มได้โดยตรงจากสมุดบันทึก Microsoft Fabric หรือจากหน้ารายการของแบบจําลองที่กําหนด เรียนรู้เกี่ยวกับการคาดการณ์

หากต้องการสร้างการคาดการณ์แบบกลุ่มในชุดข้อมูลทดสอบ คุณจะใช้แบบจําลอง LightGBM ที่ได้รับการฝึกเวอร์ชัน 1 ที่แสดงประสิทธิภาพที่ดีที่สุดจากแบบจําลองการเรียนรู้ของเครื่องที่ได้รับการฝึกทั้งหมด คุณจะโหลดชุดข้อมูลทดสอบลงใน Spark DataFrame และสร้างวัตถุ MLFlowTransformer เพื่อสร้างการคาดการณ์แบบชุดงาน จากนั้นคุณสามารถเรียกใช้ฟังก์ชัน PREDICT โดยใช้หนึ่งในสามวิธีต่อไปนี้:

  • API ตัวแปลงจาก SynapseML
  • Spark SQL API
  • ฟังก์ชันที่ผู้ใช้กําหนดเอง PySpark (UDF)

ข้อกำหนดเบื้องต้น

ส่วนนี้ 4 จาก 5 ในชุดบทช่วยสอน เมื่อต้องการทําบทช่วยสอนนี้ให้เสร็จสมบูรณ์ ก่อนอื่นให้ทําให้เสร็จสมบูรณ์:

ติดตามพร้อมกับในสมุดบันทึก

4-predict.ipynb คือสมุดบันทึกที่มาพร้อมกับบทช่วยสอนนี้

เมื่อต้องการเปิดสมุดบันทึกที่มาพร้อมกับบทช่วยสอนนี้ ให้ทําตามคําแนะนําใน เตรียมระบบของคุณสําหรับบทช่วยสอนวิทยาศาสตร์ข้อมูล เพื่อนําเข้าสมุดบันทึกไปยังพื้นที่ทํางานของคุณ

ถ้าคุณต้องการคัดลอกและวางรหัสจากหน้านี้แทน คุณสามารถสร้าง สมุดบันทึกใหม่ได้

ตรวจสอบให้แน่ใจว่าแนบ lakehouse เข้ากับสมุดบันทึก ก่อนที่คุณจะเริ่มเรียกใช้รหัส

สำคัญ

แนบเลคเฮาส์เดียวกันกับที่คุณใช้ในส่วนอื่น ๆ ของซีรี่ส์นี้

โหลดข้อมูลทดสอบ

โหลดข้อมูลทดสอบที่คุณบันทึกไว้ในส่วนที่ 3

df_test = spark.read.format("delta").load("Tables/df_test")
display(df_test)

คาดการณ์ด้วย API ตัวแปลง

เมื่อต้องการใช้ TRANSFORMer API จาก SynapseML คุณจะต้องสร้างวัตถุ MLFlowTransformer ก่อน

สร้างอินสแตนซ์ของวัตถุ MLFlowTransformer

ออบเจ็กต์ MLFlowTransformer เป็นตัวรวบรอบแบบจําลอง MLFlow ที่คุณลงทะเบียนไว้ในส่วนที่ 3 ซึ่งช่วยให้คุณสามารถสร้างการคาดการณ์ชุดงานบน DataFrame ที่กําหนด หากต้องการสร้างอินสแตนซ์ของออบเจ็กต์ MLFlowTransformer คุณจะต้องระบุพารามิเตอร์ต่อไปนี้:

  • คอลัมน์จาก DataFrame ทดสอบที่คุณต้องการเป็นข้อมูลป้อนเข้าไปยังแบบจําลอง (ในกรณีนี้ คุณจะต้องใช้ทั้งหมด)
  • ชื่อสําหรับคอลัมน์ผลลัพธ์ใหม่ (ในกรณีนี้คือการคาดการณ์)
  • ชื่อแบบจําลองที่ถูกต้องและเวอร์ชันแบบจําลองเพื่อสร้างการคาดการณ์ (ในกรณีนี้ lgbm_sm และเวอร์ชัน 1)
from synapse.ml.predict import MLFlowTransformer

model = MLFlowTransformer(
    inputCols=list(df_test.columns),
    outputCol='predictions',
    modelName='lgbm_sm',
    modelVersion=1
)

ตอนนี้คุณมีออบเจ็กต์ MLFlowTransformer แล้ว คุณสามารถใช้เพื่อสร้างการคาดการณ์ชุดงานได้

import pandas

predictions = model.transform(df_test)
display(predictions)

คาดการณ์ด้วย Spark SQL API

โค้ดต่อไปนี้จะเรียกใช้ฟังก์ชัน PREDICT ด้วย Spark SQL API

from pyspark.ml.feature import SQLTransformer 

# Substitute "model_name", "model_version", and "features" below with values for your own model name, model version, and feature columns
model_name = 'lgbm_sm'
model_version = 1
features = df_test.columns

sqlt = SQLTransformer().setStatement( 
    f"SELECT PREDICT('{model_name}/{model_version}', {','.join(features)}) as predictions FROM __THIS__")

# Substitute "X_test" below with your own test dataset
display(sqlt.transform(df_test))

ทํานายด้วยฟังก์ชันที่ผู้ใช้กําหนดเอง (UDF)

โค้ดต่อไปนี้จะเรียกใช้ฟังก์ชัน PREDICT ด้วย PySpark UDF

from pyspark.sql.functions import col, pandas_udf, udf, lit

# Substitute "model" and "features" below with values for your own model name and feature columns
my_udf = model.to_udf()
features = df_test.columns

display(df_test.withColumn("predictions", my_udf(*[col(f) for f in features])))

โปรดทราบว่าคุณยังสามารถสร้างรหัส PREDICT ได้จากหน้ารายการของแบบจําลอง เรียนรู้เกี่ยวกับการคาดการณ์

เขียนผลลัพธ์การคาดการณ์แบบจําลองไปยังเลคเฮ้าส์

เมื่อคุณสร้างการคาดการณ์แบบกลุ่มให้เขียนผลลัพธ์การคาดการณ์แบบจําลองกลับไปยัง lakehouse

# Save predictions to lakehouse to be used for generating a Power BI report
table_name = "customer_churn_test_predictions"
predictions.write.format('delta').mode("overwrite").save(f"Tables/{table_name}")
print(f"Spark DataFrame saved to delta table: {table_name}")

ขั้นตอนถัดไป

ไปต่อยัง: