Delen via


Modellen trainen met scikit-learn in Microsoft Fabric

In dit artikel wordt beschreven hoe u de iteraties van een scikit-learn-model traint en bijhoudt. Scikit-learn is een populair opensource-machine learning-framework dat vaak wordt gebruikt voor leren onder supervisie en zonder supervisie. Het framework biedt hulpprogramma's voor het aanpassen van modellen, het vooraf verwerken van gegevens, modelselectie, modelevaluatie en meer.

Vereisten

Installeer scikit-learn in uw notebook. U kunt de versie van scikit-learn in uw omgeving installeren of upgraden met behulp van de volgende opdracht:

pip install scikit-learn

Het machine learning-experiment instellen

U kunt een machine learning-experiment maken met behulp van de MLFLow-API. Met de functie MLflow set_experiment() maakt u een nieuw machine learning-experiment met de naam sample-sklearn, als deze nog niet bestaat.

Voer de volgende code uit in uw notebook en maak het experiment:

import mlflow

mlflow.set_experiment("sample-sklearn")

Een scikit-learn-model trainen

Nadat u het experiment hebt ingesteld, maakt u een voorbeeldgegevensset en een logistiek regressiemodel. Met de volgende code wordt een MLflow-uitvoering gestart en worden de metrische gegevens, parameters en het uiteindelijke logistieke regressiemodel bijgehouden. Nadat u het uiteindelijke model hebt gegenereerd, kunt u het resulterende model opslaan voor meer tracering.

Voer de volgende code uit in uw notebook en maak de voorbeeldgegevensset en het logistieke regressiemodel:

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")

Het model laden en evalueren in een voorbeeldgegevensset

Nadat u het model hebt opgeslagen, kunt u het laden voor deductie.

Voer de volgende code uit in uw notebook en laad het model en voer vervolgens de deductie uit op een voorbeeldgegevensset:

# 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()