Dela via


Träna modeller med scikit-learn i Microsoft Fabric

Den här artikeln beskriver hur du tränar och spårar iterationerna för en scikit-learn-modell. Scikit-learn är ett populärt ramverk för maskininlärning med öppen källkod som ofta används för övervakad och oövervakad inlärning. Ramverket innehåller verktyg för modellanpassning, förbearbetning av data, modellval, modellutvärdering med mera.

Förutsättningar

Installera scikit-learn i notebook-filen. Du kan installera eller uppgradera versionen av scikit-learn i din miljö med hjälp av följande kommando:

pip install scikit-learn

Konfigurera maskininlärningsexperimentet

Du kan skapa ett maskininlärningsexperiment med hjälp av MLFLow-API:et. MLflow-funktionen set_experiment() skapar ett nytt maskininlärningsexperiment med namnet sample-sklearn, om det inte redan finns.

Kör följande kod i notebook-filen och skapa experimentet:

import mlflow

mlflow.set_experiment("sample-sklearn")

Träna en scikit-learn-modell

När du har konfigurerat experimentet skapar du en exempeldatauppsättning och en logistisk regressionsmodell. Följande kod startar en MLflow-körning och spårar mått, parametrar och den slutliga logistiska regressionsmodellen. När du har genererat den slutliga modellen kan du spara den resulterande modellen för mer spårning.

Kör följande kod i notebook-filen och skapa exempeldatauppsättningen och modellen för logistisk regression:

import mlflow.sklearn
import numpy as np
from sklearn.linear_model import LogisticRegression
from mlflow.models.signature import infer_signature

with mlflow.start_run() as run:

    lr = LogisticRegression()
    X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
    y = np.array([0, 0, 1, 1, 1, 0])
    lr.fit(X, y)
    score = lr.score(X, y)
    signature = infer_signature(X, y)

    print("log_metric.")
    mlflow.log_metric("score", score)

    print("log_params.")
    mlflow.log_param("alpha", "alpha")

    print("log_model.")
    mlflow.sklearn.log_model(lr, "sklearn-model", signature=signature)
    print("Model saved in run_id=%s" % run.info.run_id)

    print("register_model.")
    mlflow.register_model(

        "runs:/{}/sklearn-model".format(run.info.run_id), "sample-sklearn"
    )
    print("All done")

Läsa in och utvärdera modellen på en exempeldatauppsättning

När du har sparat modellen kan du läsa in den för slutsatsdragning.

Kör följande kod i notebook-filen och läs in modellen och kör sedan slutsatsdragningen på en exempeldatauppsättning:

# Inference with loading the logged model
from synapse.ml.predict import MLflowTransformer

spark.conf.set("spark.synapse.ml.predict.enabled", "true")

model = MLflowTransformer(
    inputCols=["x"],
    outputCol="prediction",
    modelName="sample-sklearn",
    modelVersion=1,
)

test_spark = spark.createDataFrame(
    data=np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1).tolist(), schema=["x"]
)

batch_predictions = model.transform(test_spark)

batch_predictions.show()