Εκμάθηση: Δημιουργία, αξιολόγηση και βαθμολογία ενός μοντέλου ταξινόμησης κειμένου
Αυτό το εκπαιδευτικό βοήθημα παρουσιάζει ένα τελικό παράδειγμα μιας ροής εργασιών Synapse Data Science για ένα μοντέλο ταξινόμησης κειμένου, στο Microsoft Fabric. Το σενάριο χρησιμοποιεί word2vec και λογιστική παλινδρόμηση, στο Spark, για να καθορίσει το είδος ενός βιβλίου από το σύνολο δεδομένων βιβλίων της Βρετανικής Βιβλιοθήκης, αποκλειστικά με βάση τον τίτλο του βιβλίου.
Αυτό το εκπαιδευτικό βοήθημα καλύπτει τα εξής βήματα:
- Εγκατάσταση προσαρμοσμένων βιβλιοθηκών
- Φόρτωση των δεδομένων
- Κατανόηση και επεξεργασία των δεδομένων με διερευνητική ανάλυση δεδομένων
- Εκπαιδεύστε ένα μοντέλο εκμάθησης μηχανής με word2vec και λογιστική παλινδρόμηση και παρακολουθήστε πειράματα με το MLflow και τη δυνατότητα αυτόματης καταχώρησης fabric
- Φόρτωση του μοντέλου εκμάθησης μηχανής για βαθμολόγηση και προβλέψεις
Προϋποθέσεις
Λάβετε μια συνδρομής Microsoft Fabric . Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση microsoft Fabric.
Εισέλθετε για να το Microsoft Fabric.
Χρησιμοποιήστε την εναλλαγή εμπειρίας στην κάτω αριστερή πλευρά της αρχικής σελίδας σας για να μεταβείτε σε Fabric.
- Εάν δεν έχετε μια λίμνη Microsoft Fabric, δημιουργήστε ένα ακολουθώντας τα βήματα στο Δημιουργήστε ένα lakehouse στο Microsoft Fabric.
Παρακολούθηση σε σημειωματάριο
Μπορείτε να κάνετε μία από αυτές τις επιλογές για να ακολουθήσετε τις οδηγίες σε ένα σημειωματάριο:
- Ανοίξτε και εκτελέστε το ενσωματωμένο σημειωματάριο.
- Αποστείλετε το σημειωματάριό σας από το GitHub.
Άνοιγμα του ενσωματωμένου σημειωματάριου
Το δείγμα σημειωματάριο ταξινόμησης στο είδος τίτλου συνοδεύει αυτό το εκπαιδευτικό βοήθημα.
Για να ανοίξετε το δείγμα σημειωματάριου για αυτό το εκπαιδευτικό βοήθημα, ακολουθήστε τις οδηγίες στο Προετοιμασία του συστήματός σας για εκπαιδευτικά βοηθήματα επιστήμης δεδομένων.
Βεβαιωθείτε ότι επισυνάψετε μια λίμνη στο σημειωματάριο προτού ξεκινήσετε την εκτέλεση κώδικα.
Εισαγωγή του σημειωματάριου από το GitHub
AIsample - Title Genre Classification.ipynb είναι το σημειωματάριο που συνοδεύει αυτό το πρόγραμμα εκμάθησης.
Για να ανοίξετε το σημειωματάριο που συνοδεύει αυτό το εκπαιδευτικό βοήθημα, ακολουθήστε τις οδηγίες στο Προετοιμασία του συστήματός σας για εκπαιδευτικά βοηθήματα επιστήμης δεδομένων, να εισαγάγετε το σημειωματάριο στον χώρο εργασίας σας.
Εάν προτιμάτε να αντιγράψετε και να επικολλήσετε τον κώδικα από αυτήν τη σελίδα, μπορείτε να δημιουργήσετε ένα νέο σημειωματάριο.
Βεβαιωθείτε ότι επισυνάψετε μια λίμνη στο σημειωματάριο προτού ξεκινήσετε την εκτέλεση κώδικα.
Βήμα 1: Εγκατάσταση προσαρμοσμένων βιβλιοθηκών
Για την ανάπτυξη μοντέλου εκμάθησης μηχανής ή την ανάλυση δεδομένων ad-hoc, ίσως χρειαστεί να εγκαταστήσετε γρήγορα μια προσαρμοσμένη βιβλιοθήκη για την περίοδο λειτουργίας 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 | Θέματα | Είδος | Γλώσσες | Σημειώσεις | Αναγνωριστικό εγγραφής 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 | Μονογραφία | Yearsley, Ann | 1753-1806 | άτομο | Περισσότερα, Χάνα, 1745-1833 [άτομο]; Yearsley, Ann, 1753-1806 [πρόσωπο] | Ποιήματα σε διάφορες περιπτώσεις [Με μια εξωφρενική επιστολή από Χάνα Περισσότερα.] | Αγγλία | Λονδίνο | 1786 | Σημείωση χειρόγραφης τέταρτης έκδοσης | Digital Store 11644.d.32 | Αγγλικά | 003996603 | Ψεύτικος | |||||||||||||||||||||||||||||||
014602830 | Μονογραφία | Α, Τ. | άτομο | Όλνταμ, Τζον, 1653-1683 [πρόσωπο]; A, T. [άτομο] | Ένας Σάτυρ εναντίον του 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
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. Η αυτόματη καταγραφή καταγράφει αυτόματα τις τιμές παραμέτρων εισόδου και τα μετρικά εξόδου ενός μοντέλου εκμάθησης μηχανής καθώς τα εκπαιδεύετε. Στη συνέχεια, καταγράψτε αυτές τις πληροφορίες στον χώρο εργασίας. Στον χώρο εργασίας, μπορείτε να αποκτήσετε πρόσβαση και να απεικονίσετε τις πληροφορίες με τα API MLflow ή το αντίστοιχο πείραμα στον χώρο εργασίας. Για να μάθετε περισσότερα σχετικά με την αυτόματη καταχώρηση, ανατρέξτε στο θέμα Αυτόματη καταχώρηση στο Microsoft Fabric.
# Set up Mlflow for experiment tracking
mlflow.set_experiment(EXPERIMENT_NAME)
mlflow.autolog(disable=True) # Disable Mlflow autologging
Για να απενεργοποιήσετε την αυτόματη καταχώρηση σε σημειωματάριο του Microsoft Fabric σε μια περίοδο λειτουργίας σημειωματάριου, καλέστε mlflow.autolog()
και ορίστε disable=True
:
Ανάγνωση ανεπεξέργαστων δεδομένων ημερομηνίας από το lakehouse
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))
Διαιρέστε τις παραγράφους και τις προτάσεις σε μικρότερες μονάδες, για να διακριτικοποιήσετε το σύνολο δεδομένων. Με αυτόν τον τρόπο, γίνεται ευκολότερο να εκχωρήσετε σημασία. Στη συνέχεια, καταργήστε τις λέξεις-κλειδιά διακοπής για να βελτιώσετε τις επιδόσεις. Η κατάργηση του 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))
Εμφανίστε τη βιβλιοθήκη cloud λέξεων για κάθε κλάση. Μια βιβλιοθήκη cloud λέξεων είναι μια οπτική παρουσίαση λέξεων-κλειδιών που εμφανίζονται συχνά σε δεδομένα κειμένου. Η βιβλιοθήκη wordcloud είναι αποτελεσματική, επειδή η απόδοση λέξεων-κλειδιών σχηματίζει μια εικόνα χρώματος cloud, για την καλύτερη καταγραφή των κύριων δεδομένων κειμένου με μια ματιά. Μάθετε περισσότερα σχετικά με τοτου 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")
)
Ρύθμιση υπερπαραμετών
Δημιουργήστε ένα πλέγμα παραμέτρων για αναζήτηση μέσω των υπερπαραμετών. Στη συνέχεια, δημιουργήστε έναν εκτιμητή διασταυρούμενης αξιολόγησης, για να δημιουργήσετε ένα 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
Ξεκινήστε τη διαδικασία εκπαίδευσης και αξιολόγησης. Χρησιμοποιήστε τη ροή ML για να παρακολουθείτε όλα τα πειράματα και τις παραμέτρους καταγραφής, τα μετρικά και τα μοντέλα. Όλες αυτές οι πληροφορίες καταγράφονται με το όνομα του πειράματος στον χώρο εργασίας.
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 έχει τα μεγαλύτερα μετρικά για το Area Under the Precision-Recall Curve (AUPRC) και για το Area Under the Curve Receiver Operating Characteristic (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
- Εκπαίδευση μοντέλων εκμάθησης μηχανής
- πειράματα εκμάθησης μηχανής στο Microsoft Fabric