บทช่วยสอน: สร้าง ประเมิน และให้คะแนนแบบจําลองการจัดประเภทข้อความ
บทช่วยสอนนี้แสดงตัวอย่างแบบ end-to-end ของเวิร์กโฟลว์ Synapse Data Science สําหรับแบบจําลองการจัดประเภทข้อความใน Microsoft Fabric สถานการณ์นี้ใช้ word2vec และการถดถอยโลจิสติกส์บน Spark เพื่อกําหนดประเภทของหนังสือจากชุดข้อมูลหนังสือบริติชไลบรารีโดยยึดตามชื่อของหนังสือเท่านั้น
บทช่วยสอนนี้ครอบคลุมขั้นตอนเหล่านี้:
- ติดตั้งไลบรารีแบบกําหนดเอง
- โหลดข้อมูล
- ทําความเข้าใจและประมวลผลข้อมูลด้วยการวิเคราะห์ข้อมูลเชิงสํารวจ
- ฝึกแบบจําลองการเรียนรู้ของเครื่องด้วย word2vec และการถดถอยโลจิสติกส์ และติดตามการทดลองโดย MLflow และคุณลักษณะการบันทึกอัตโนมัติของ Fabric
- โหลดแบบจําลองการเรียนรู้ของเครื่องสําหรับการให้คะแนนและการคาดการณ์
ข้อกําหนดเบื้องต้น
รับ การสมัครใช้งาน Microsoft Fabric หรือลงทะเบียนสําหรับ Microsoft Fabric รุ่นทดลองใช้ฟรี
ลงชื่อเข้าใช้ Microsoft Fabric
ใช้ตัวสลับประสบการณ์การใช้งานที่ด้านล่างซ้ายของหน้าหลักของคุณเพื่อเปลี่ยนเป็น Fabric
- ถ้าคุณไม่มี Microsoft Fabric lakehouse ให้สร้างโดยทําตามขั้นตอนใน สร้างเลคเฮ้าส์ใน Microsoft Fabric
ติดตามในสมุดบันทึก
คุณสามารถเลือกหนึ่งในตัวเลือกเหล่านี้เพื่อติดตามในสมุดบันทึกได้:
- เปิดและเรียกใช้สมุดบันทึกที่มีอยู่ภายใน
- อัปโหลดสมุดบันทึกของคุณจาก GitHub
เปิดสมุดบันทึกที่มีอยู่แล้วภายใน
ตัวอย่าง การจัดประเภทประเภทประเภทชื่อเรื่อง สมุดบันทึกมาพร้อมกับบทช่วยสอนนี้
เมื่อต้องการเปิดสมุดบันทึกตัวอย่างสําหรับบทช่วยสอนนี้ ให้ทําตามคําแนะนําใน เตรียมระบบของคุณสําหรับบทช่วยสอนวิทยาศาสตร์ข้อมูล
ตรวจสอบให้แน่ใจว่า แนบ lakehouse เข้ากับ สมุดบันทึกก่อนที่คุณจะเริ่มเรียกใช้โค้ด
นําเข้าสมุดบันทึกจาก GitHub
AIsample - เรื่อง Classification.ipynb ชื่อเรื่องคือสมุดบันทึกที่มาพร้อมกับบทช่วยสอนนี้
เมื่อต้องการเปิดสมุดบันทึกที่มาพร้อมกับบทช่วยสอนนี้ ให้ทําตามคําแนะนําใน เตรียมระบบของคุณสําหรับบทช่วยสอนวิทยาศาสตร์ข้อมูล การนําเข้าสมุดบันทึกไปยังพื้นที่ทํางานของคุณ
ถ้าคุณต้องการคัดลอกและวางโค้ดจากหน้านี้ สร้างสมุดบันทึกใหม่
ตรวจสอบให้แน่ใจว่า แนบ lakehouse เข้ากับ สมุดบันทึกก่อนที่คุณจะเริ่มเรียกใช้โค้ด
ขั้นตอนที่ 1: ติดตั้งไลบรารีแบบกําหนดเอง
สําหรับการพัฒนาแบบจําลองการเรียนรู้ของเครื่องหรือการวิเคราะห์ข้อมูลเฉพาะกิจ คุณอาจจําเป็นต้องติดตั้งไลบรารีแบบกําหนดเองสําหรับเซสชัน Apache Spark ของคุณได้อย่างรวดเร็ว คุณมีสองตัวเลือกในการติดตั้งไลบรารี
- ใช้ความสามารถในการติดตั้งแบบอินไลน์ (
%pip
หรือ%conda
) ของสมุดบันทึกของคุณเพื่อติดตั้งไลบรารีในสมุดบันทึกปัจจุบันของคุณเท่านั้น - อีกวิธีหนึ่งคือ คุณสามารถสร้างสภาพแวดล้อม Fabric ติดตั้งไลบรารีจากแหล่งข้อมูลสาธารณะ หรืออัปโหลดไลบรารีแบบกําหนดเอง จากนั้นผู้ดูแลระบบพื้นที่ทํางานของคุณสามารถแนบสภาพแวดล้อมเป็นค่าเริ่มต้นสําหรับพื้นที่ทํางานได้ ไลบรารีทั้งหมดในสภาพแวดล้อมจะพร้อมใช้งานสําหรับใช้ในข้อกําหนดงานของสมุดบันทึกและ Spark ในพื้นที่ทํางาน สําหรับข้อมูลเพิ่มเติมเกี่ยวกับสภาพแวดล้อม ให้ดู สร้าง กําหนดค่า และใช้สภาพแวดล้อมใน Microsoft Fabric
สําหรับแบบจําลองการจัดประเภท ให้ใช้ไลบรารี wordcloud
เพื่อแสดงความถี่ของคําในข้อความ โดยที่ขนาดของคําแสดงความถี่ สําหรับบทช่วยสอนนี้ ให้ใช้ %pip install
เพื่อติดตั้ง wordcloud
ในสมุดบันทึกของคุณ
โน้ต
เคอร์เนล PySpark รีสตาร์ทหลังจาก %pip install
ทํางาน ติดตั้งไลบรารีที่จําเป็นก่อนที่คุณจะเรียกใช้เซลล์อื่นๆ
# Install wordcloud for text visualization by using pip
%pip install wordcloud
ขั้นตอนที่ 2: โหลดข้อมูล
ชุดข้อมูลมีเมตาดาต้าเกี่ยวกับหนังสือจากบริติชไลบรารีซึ่งเป็นการทํางานร่วมกันระหว่างไลบรารีและ Microsoft แบบตัวเลข เมตาดาต้าคือข้อมูลการจัดประเภทเพื่อระบุว่าหนังสือเป็นนิยายหรือไม่ ด้วยชุดข้อมูลนี้เป้าหมายคือการฝึกแบบจําลองการจําแนกประเภทที่กําหนดประเภทของหนังสือเท่านั้นตามชื่อเรื่อง
รหัสเรกคอร์ด BL | ชนิดของทรัพยากร | ชื่อ | วันที่ที่เชื่อมโยงกับชื่อ | ชนิดของชื่อ | บทบาท | ชื่อทั้งหมด | ชื่อเรื่อง | ชื่อตัวแปร | ชื่อชุดข้อมูล | หมายเลขภายในชุดข้อมูล | ประเทศที่เผยแพร่ | สถานที่เผยแพร่ | ผู้พิมพ์ | วันที่เผยแพร่ | ฉบับ | คําอธิบายทางกายภาพ | การจําแนกประเภท Dewey | BL shelfmark | หัว ข้อ | ประเภท | ภาษา | หมาย เหตุ | รหัสเรกคอร์ด BL สําหรับทรัพยากรจริง | classification_id | user_id | created_at | subject_ids | annotator_date_pub | annotator_normalised_date_pub | annotator_edition_statement | annotator_genre | annotator_FAST_genre_terms | annotator_FAST_subject_terms | annotator_comments | annotator_main_language | annotator_other_languages_summaries | annotator_summaries_language | annotator_translation | annotator_original_language | annotator_publisher | annotator_place_pub | annotator_country | annotator_title | ลิงก์ไปยังหนังสือที่เป็นตัวเลข | มีคําอธิบายประกอบ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
014602826 | Monograph | Yearsley, Ann | 1753-1806 | คน | เพิ่มเติม, ฮันนาห์, 1745-1833 [บุคคล]; Yearsley, Ann, 1753-1806 [person] | บทกวีในหลายโอกาส [ด้วยตัวอักษรเตรียมการโดยฮันนาห์เพิ่มเติม] | อังกฤษ | ลอนดอน | 1786 | หมายเหตุ MANUSCRIPT รุ่นที่สี่ | Digital Store 11644.d.32 | อังกฤษ | 003996603 | ปลอม | |||||||||||||||||||||||||||||||
014602830 | Monograph | A, T. | คน | Oldham, John, 1653-1683 [person]; A, T. [person] | Satyr ต่อต้าน Vertue (บทกวี: ควรพูดโดย Town-Hector [โดย John Oldham) เครื่องหมายนําหน้า: T. A.]) | อังกฤษ | ลอนดอน | 1679 | 15 หน้า (4°) | Digital Store 11602.ee.10. (2.) | อังกฤษ | 000001143 | ปลอม |
กําหนดพารามิเตอร์ต่อไปนี้เพื่อให้คุณสามารถใช้สมุดบันทึกนี้บนชุดข้อมูลต่างๆ:
IS_CUSTOM_DATA = False # If True, the user must manually upload the dataset
DATA_FOLDER = "Files/title-genre-classification"
DATA_FILE = "blbooksgenre.csv"
# Data schema
TEXT_COL = "Title"
LABEL_COL = "annotator_genre"
LABELS = ["Fiction", "Non-fiction"]
EXPERIMENT_NAME = "sample-aisample-textclassification" # MLflow experiment name
ดาวน์โหลดชุดข้อมูลและอัปโหลดไปยัง lakehouse
รหัสนี้จะดาวน์โหลดเวอร์ชันสาธารณะของชุดข้อมูล และจากนั้นเก็บไว้ใน Fabric lakehouse
สําคัญ
เพิ่มเลคเฮ้าส์ ลงในสมุดบันทึกก่อนที่คุณจะเรียกใช้ ความล้มเหลวในการทําเช่นนั้นจะส่งผลให้เกิดข้อผิดพลาด
if not IS_CUSTOM_DATA:
# Download demo data files into the lakehouse, if they don't exist
import os, requests
remote_url = "https://synapseaisolutionsa.blob.core.windows.net/public/Title_Genre_Classification"
fname = "blbooksgenre.csv"
download_path = f"/lakehouse/default/{DATA_FOLDER}/raw"
if not os.path.exists("/lakehouse/default"):
# Add a lakehouse, if no default lakehouse was added to the notebook
# A new notebook won't link to any lakehouse by default
raise FileNotFoundError(
"Default lakehouse not found, please add a lakehouse and restart the session."
)
os.makedirs(download_path, exist_ok=True)
if not os.path.exists(f"{download_path}/{fname}"):
r = requests.get(f"{remote_url}/{fname}", timeout=30)
with open(f"{download_path}/{fname}", "wb") as f:
f.write(r.content)
print("Downloaded demo data files into lakehouse.")
นําเข้าไลบรารีที่จําเป็น
ก่อนการประมวลผลใดก็ตาม คุณจําเป็นต้องนําเข้าไลบรารีที่จําเป็น รวมถึงไลบรารีสําหรับ Spark และ SynapseML:
import numpy as np
from itertools import chain
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import seaborn as sns
import pyspark.sql.functions as F
from pyspark.ml import Pipeline
from pyspark.ml.feature import *
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.evaluation import (
BinaryClassificationEvaluator,
MulticlassClassificationEvaluator,
)
from synapse.ml.stages import ClassBalancer
from synapse.ml.train import ComputeModelStatistics
import mlflow
กําหนด hyperparameters
กําหนด hyperparameters บางอย่างสําหรับการฝึกแบบจําลอง
สําคัญ
แก้ไข hyperparameters เหล่านี้เฉพาะเมื่อคุณทําความเข้าใจแต่ละพารามิเตอร์เท่านั้น
# Hyperparameters
word2vec_size = 128 # The length of the vector for each word
min_word_count = 3 # The minimum number of times that a word must appear to be considered
max_iter = 10 # The maximum number of training iterations
k_folds = 3 # The number of folds for cross-validation
เริ่มการบันทึกเวลาที่จําเป็นในการเรียกใช้สมุดบันทึกนี้:
# Record the notebook running time
import time
ts = time.time()
ตั้งค่าการติดตามการทดลอง MLflow
การล็อกอัตโนมัติจะขยายความสามารถในการบันทึกกระแส ML การล็อกอัตโนมัติจะจับค่าพารามิเตอร์อินพุตและเมตริกเอาต์พุตของแบบจําลองการเรียนรู้ของเครื่องตามที่คุณฝึกโดยอัตโนมัติ จากนั้นคุณจะบันทึกข้อมูลนี้ไปยังพื้นที่ทํางาน ในพื้นที่ทํางาน คุณสามารถเข้าถึงและแสดงข้อมูลด้วย MLflow API หรือการทดลองที่สอดคล้องกันในพื้นที่ทํางานได้ เมื่อต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ autologging ดู Autologging ใน Microsoft Fabric
# Set up Mlflow for experiment tracking
mlflow.set_experiment(EXPERIMENT_NAME)
mlflow.autolog(disable=True) # Disable Mlflow autologging
เพื่อปิดการใช้งาน Microsoft Fabric autologging ในเซสชันสมุดบันทึก เรียก mlflow.autolog()
และตั้งค่า disable=True
:
อ่านข้อมูลวันที่ดิบจากเลคเฮ้าส์
raw_df = spark.read.csv(f"{DATA_FOLDER}/raw/{DATA_FILE}", header=True, inferSchema=True)
ขั้นตอนที่ 3: ดําเนินการวิเคราะห์ข้อมูลเชิงสํารวจ
สํารวจชุดข้อมูลด้วยคําสั่ง display
เพื่อดูสถิติระดับสูงสําหรับชุดข้อมูลและเพื่อแสดงมุมมองแผนภูมิ:
display(raw_df.limit(20))
เตรียมข้อมูล
ลบรายการที่ซ้ํากันออกเพื่อล้างข้อมูล:
df = (
raw_df.select([TEXT_COL, LABEL_COL])
.where(F.col(LABEL_COL).isin(LABELS))
.dropDuplicates([TEXT_COL])
.cache()
)
display(df.limit(20))
ปรับใช้การปรับสมดุลระดับชั้นกับอคติใด ๆ:
# Create a ClassBalancer instance, and set the input column to LABEL_COL
cb = ClassBalancer().setInputCol(LABEL_COL)
# Fit the ClassBalancer instance to the input DataFrame, and transform the DataFrame
df = cb.fit(df).transform(df)
# Display the first 20 rows of the transformed DataFrame
display(df.limit(20))
แยกย่อหน้าและประโยคออกเป็นหน่วยขนาดเล็กลงเพื่อทําโทเค็นชุดข้อมูล ด้วยวิธีนี้ จึงเป็นเรื่องง่ายที่จะกําหนดความหมาย จากนั้นลบ stopwords เพื่อปรับปรุงประสิทธิภาพการทํางาน การลบ Stopword เกี่ยวข้องกับการลบคําที่เกิดขึ้นโดยทั่วไปในเอกสารทั้งหมดใน corpus การลบ Stopword คือหนึ่งในขั้นตอนการประมวลผลล่วงหน้าที่ใช้บ่อยที่สุดในแอปพลิเคชันการประมวลผลภาษาธรรมชาติ (NLP)
# Text transformer
tokenizer = Tokenizer(inputCol=TEXT_COL, outputCol="tokens")
stopwords_remover = StopWordsRemover(inputCol="tokens", outputCol="filtered_tokens")
# Build the pipeline
pipeline = Pipeline(stages=[tokenizer, stopwords_remover])
token_df = pipeline.fit(df).transform(df)
display(token_df.limit(20))
แสดงคลัง wordcloud สําหรับแต่ละชั้นเรียน ไลบรารี wordcloud คือการนําเสนอคําสําคัญที่ชัดเจนซึ่งปรากฏขึ้นบ่อยในข้อมูลข้อความ ไลบรารี wordcloud มีประสิทธิภาพเนื่องจากการแสดงผลคําสําคัญจะสร้างรูปภาพสีที่ cloudlike เพื่อให้จับภาพข้อมูลข้อความหลักได้อย่างรวดเร็ว เรียนรู้เพิ่มเติมเกี่ยวกับ wordcloud
# WordCloud
for label in LABELS:
tokens = (
token_df.where(F.col(LABEL_COL) == label)
.select(F.explode("filtered_tokens").alias("token"))
.where(F.col("token").rlike(r"^\w+$"))
)
top50_tokens = (
tokens.groupBy("token").count().orderBy(F.desc("count")).limit(50).collect()
)
# Generate a wordcloud image
wordcloud = WordCloud(
scale=10,
background_color="white",
random_state=42, # Make sure the output is always the same for the same input
).generate_from_frequencies(dict(top50_tokens))
# Display the generated image by using matplotlib
plt.figure(figsize=(10, 10))
plt.title(label, fontsize=20)
plt.axis("off")
plt.imshow(wordcloud, interpolation="bilinear")
สุดท้ายใช้ word2vec เพื่อทําให้ข้อความเป็นเวกเตอร์ เทคนิค word2vec สร้างการแสดงเวกเตอร์ของแต่ละคําในข้อความ คําที่ใช้ในบริบทที่คล้ายกันหรือที่มีความสัมพันธ์เชิงความหมายถูกจับภาพได้อย่างมีประสิทธิภาพผ่านความใกล้ชิดในพื้นที่เวกเตอร์ ความใกล้ชิดนี้แสดงให้เห็นว่าคําที่คล้ายกันมีเวกเตอร์คําที่คล้ายกัน
# Label transformer
label_indexer = StringIndexer(inputCol=LABEL_COL, outputCol="labelIdx")
vectorizer = Word2Vec(
vectorSize=word2vec_size,
minCount=min_word_count,
inputCol="filtered_tokens",
outputCol="features",
)
# Build the pipeline
pipeline = Pipeline(stages=[label_indexer, vectorizer])
vec_df = (
pipeline.fit(token_df)
.transform(token_df)
.select([TEXT_COL, LABEL_COL, "features", "labelIdx", "weight"])
)
display(vec_df.limit(20))
ขั้นตอนที่ 4: ฝึกและประเมินแบบจําลอง
ด้วยข้อมูลที่มีอยู่ ให้กําหนดแบบจําลอง ในส่วนนี้ คุณฝึกแบบจําลองการถดถอยโลจิสติกส์เพื่อจัดประเภทข้อความที่เป็นแบบเวกเตอร์
เตรียมการฝึกอบรมและทดสอบชุดข้อมูล
# Split the dataset into training and testing
(train_df, test_df) = vec_df.randomSplit((0.8, 0.2), seed=42)
ติดตามการทดลองการเรียนรู้ของเครื่อง
การทดลองการเรียนรู้ของเครื่องเป็นหน่วยหลักขององค์กรและควบคุมการเรียกใช้การเรียนรู้ของเครื่องที่เกี่ยวข้องทั้งหมด การเรียกใช้สอดคล้องกับการดําเนินการเดียวของรหัสแบบจําลอง
การติดตามการทดลองการเรียนรู้ของเครื่องจะจัดการการทดลองและคอมโพเนนต์ทั้งหมด ตัวอย่างเช่น พารามิเตอร์ เมตริก แบบจําลอง และวัตถุอื่น ๆ การติดตามช่วยให้องค์กรขององค์ประกอบที่จําเป็นทั้งหมดของการทดสอบการเรียนรู้ของเครื่องเฉพาะ นอกจากนี้ยังช่วยให้สามารถทําซ้ําผลลัพธ์ในอดีตได้ง่ายด้วยการทดลองที่บันทึกไว้ เรียนรู้เพิ่มเติมเกี่ยวกับการทดลองการเรียนรู้ของเครื่องใน Microsoft Fabric
# Build the logistic regression classifier
lr = (
LogisticRegression()
.setMaxIter(max_iter)
.setFeaturesCol("features")
.setLabelCol("labelIdx")
.setWeightCol("weight")
)
ปรับแต่ง hyperparameters
สร้างเส้นตารางของพารามิเตอร์เพื่อค้นหามากกว่า hyperparameters จากนั้นสร้างตัวประมาณค่าข้ามเพื่อสร้างแบบจําลอง CrossValidator
:
# Build a grid search to select the best values for the training parameters
param_grid = (
ParamGridBuilder()
.addGrid(lr.regParam, [0.03, 0.1])
.addGrid(lr.elasticNetParam, [0.0, 0.1])
.build()
)
if len(LABELS) > 2:
evaluator_cls = MulticlassClassificationEvaluator
evaluator_metrics = ["f1", "accuracy"]
else:
evaluator_cls = BinaryClassificationEvaluator
evaluator_metrics = ["areaUnderROC", "areaUnderPR"]
evaluator = evaluator_cls(labelCol="labelIdx", weightCol="weight")
# Build a cross-evaluator estimator
crossval = CrossValidator(
estimator=lr,
estimatorParamMaps=param_grid,
evaluator=evaluator,
numFolds=k_folds,
collectSubModels=True,
)
ประเมินแบบจําลอง
เราสามารถประเมินแบบจําลองบนชุดข้อมูลทดสอบเพื่อเปรียบเทียบได้ แบบจําลองที่ได้รับการฝึกฝนมาเป็นอย่างดีควรแสดงให้เห็นถึงประสิทธิภาพการทํางานสูงบนเมตริกที่เกี่ยวข้องเมื่อเรียกใช้กับการตรวจสอบความถูกต้องและทดสอบชุดข้อมูล
def evaluate(model, df):
log_metric = {}
prediction = model.transform(df)
for metric in evaluator_metrics:
value = evaluator.evaluate(prediction, {evaluator.metricName: metric})
log_metric[metric] = value
print(f"{metric}: {value:.4f}")
return prediction, log_metric
ติดตามการทดลองโดยใช้ MLflow
เริ่มต้นกระบวนการฝึกอบรมและการประเมินผล ใช้ MLflow เพื่อติดตามการทดลองทั้งหมด และพารามิเตอร์ไฟล์บันทึก เมตริก และแบบจําลอง ข้อมูลทั้งหมดนี้จะถูกบันทึกไว้ใต้ชื่อการทดลองในพื้นที่ทํางาน
with mlflow.start_run(run_name="lr"):
models = crossval.fit(train_df)
best_metrics = {k: 0 for k in evaluator_metrics}
best_index = 0
for idx, model in enumerate(models.subModels[0]):
with mlflow.start_run(nested=True, run_name=f"lr_{idx}") as run:
print("\nEvaluating on test data:")
print(f"subModel No. {idx + 1}")
prediction, log_metric = evaluate(model, test_df)
if log_metric[evaluator_metrics[0]] > best_metrics[evaluator_metrics[0]]:
best_metrics = log_metric
best_index = idx
print("log model")
mlflow.spark.log_model(
model,
f"{EXPERIMENT_NAME}-lrmodel",
registered_model_name=f"{EXPERIMENT_NAME}-lrmodel",
dfs_tmpdir="Files/spark",
)
print("log metrics")
mlflow.log_metrics(log_metric)
print("log parameters")
mlflow.log_params(
{
"word2vec_size": word2vec_size,
"min_word_count": min_word_count,
"max_iter": max_iter,
"k_folds": k_folds,
"DATA_FILE": DATA_FILE,
}
)
# Log the best model and its relevant metrics and parameters to the parent run
mlflow.spark.log_model(
models.subModels[0][best_index],
f"{EXPERIMENT_NAME}-lrmodel",
registered_model_name=f"{EXPERIMENT_NAME}-lrmodel",
dfs_tmpdir="Files/spark",
)
mlflow.log_metrics(best_metrics)
mlflow.log_params(
{
"word2vec_size": word2vec_size,
"min_word_count": min_word_count,
"max_iter": max_iter,
"k_folds": k_folds,
"DATA_FILE": DATA_FILE,
}
)
วิธีดูการทดลองของคุณ:
- เลือกพื้นที่ทํางานของคุณในการนําทางด้านซ้าย
- ค้นหาและเลือกชื่อการทดสอบ - ในกรณีนี้ sample_aisample-textclassification
ขั้นตอนที่ 5: ให้คะแนนและบันทึกผลลัพธ์การคาดการณ์
Microsoft Fabric ช่วยให้ผู้ใช้สามารถดําเนินการแบบจําลองการเรียนรู้ของเครื่องด้วยฟังก์ชั่นที่ปรับขนาดได้ PREDICT
ฟังก์ชันนี้สนับสนุนการให้คะแนนแบบกลุ่ม (หรือการอนุมานชุด) ในกลไกการคํานวณใดก็ตาม คุณสามารถสร้างการคาดการณ์ชุดงานได้โดยตรงจากสมุดบันทึกหรือหน้ารายการสําหรับแบบจําลองเฉพาะ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ PREDICT และวิธีการใช้งานใน Fabric โปรดดู แบบจําลองการเรียนรู้ของเครื่องโดยการให้คะแนนด้วย PREDICT ใน Microsoft Fabric
จากผลลัพธ์การประเมินผลก่อนหน้านี้ แบบจําลอง 1 มีเมตริกที่ใหญ่ที่สุดสําหรับทั้งพื้นที่ภายใต้เส้นโค้ง Precision-Recall (AUPRC) และสําหรับพื้นที่ภายใต้ลักษณะการปฏิบัติการของตัวรับเส้นโค้ง (AUC-ROC) ดังนั้น คุณควรใช้แบบจําลอง 1 สําหรับการคาดการณ์
หน่วยวัด AUC-ROC มีการใช้กันอย่างแพร่หลายในการวัดประสิทธิภาพของตัวจัดประเภทไบนารี อย่างไรก็ตาม บางครั้งมีความเหมาะสมมากขึ้นในการประเมินตัวจําแนกประเภทตามการวัด AUPRC แผนภูมิ AUC-ROC แสดงภาพการแลกเปลี่ยนระหว่างอัตราบวกจริง (TPR) และอัตราบวกเท็จ (FPR) เส้นโค้ง AUPRC จะรวมความแม่นยํา (ค่าการคาดการณ์เชิงบวกหรือ PPV) และการเรียกใช้ (อัตราบวกจริงหรือ TPR) ในการแสดงผลข้อมูลด้วยภาพเดียว
# Load the best model
model_uri = f"models:/{EXPERIMENT_NAME}-lrmodel/1"
loaded_model = mlflow.spark.load_model(model_uri, dfs_tmpdir="Files/spark")
# Verify the loaded model
batch_predictions = loaded_model.transform(test_df)
batch_predictions.show(5)
# Code to save userRecs in the lakehouse
batch_predictions.write.format("delta").mode("overwrite").save(
f"{DATA_FOLDER}/predictions/batch_predictions"
)
# Determine the entire runtime
print(f"Full run cost {int(time.time() - ts)} seconds.")
เนื้อหาที่เกี่ยวข้อง
- แบบจําลองการเรียนรู้ของเครื่อง ใน Microsoft Fabric
- แบบจําลองการเรียนรู้ของเครื่อง Train
- การทดลองการเรียนรู้ของเครื่อง ใน Microsoft Fabric