Träna modeller med scikit-learn i Microsoft Fabric

Scikit-learn (scikit-learn.org) är ett populärt ramverk för maskininlärning med öppen källkod. Den används ofta för övervakad och oövervakad inlärning. Den innehåller också olika verktyg för modellanpassning, förbearbetning av data, modellval, modellutvärdering med mera.

I det här avsnittet går vi igenom ett exempel på hur du kan träna och spåra iterationerna för din Scikit-Learn-modell.

Installera scikit-learn

För att komma igång med scikit-learn måste du se till att det är installerat 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

Nu ska vi skapa ett maskininlärningsexperiment med hjälp av MLFLow-API:et. API:et MLflow set_experiment() skapar ett nytt maskininlärningsexperiment om det inte redan finns.

import mlflow

mlflow.set_experiment("sample-sklearn")

Träna en scikit-learn-modell

När experimentet har skapats skapar vi en exempeldatauppsättning och skapar en logistisk regressionsmodell. Vi startar också en MLflow-körning och spårar mått, parametrar och den slutliga logistiska regressionsmodellen. När vi har genererat den slutliga modellen sparar vi även den resulterande modellen för ytterligare spårning.

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 modellen har sparats kan den också läsas in för slutsatsdragning. För att göra detta läser vi in modellen och kör 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()