Partager via


Former des modèles avec scikit-learn dans Microsoft Fabric

Cet article décrit comment former et suivre les itérations d’un modèle scikit-learn. Scikit-learn est un cadre d’apprentissage automatique open-source populaire fréquemment utilisé pour l’apprentissage supervisé et non supervisé. Le cadre fournit des outils pour l’ajustement des modèles, le prétraitement des données, la sélection des modèles, l’évaluation des modèles, etc.

Prérequis

Installez scikit-learn dans votre notebook. Vous pouvez installer ou mettre à jour la version de scikit-learn sur votre environnement à l’aide de la commande suivante :

pip install scikit-learn

Configurer l'expérience d'apprentissage automatique

Vous pouvez créer une expérience d'apprentissage automatique à l'aide de l'API MLFLow. La fonction set_experiment() de MLflow crée une nouvelle expérience d’apprentissage automatique nommée sample-sklearn, si elle n’existe pas déjà.

Pour créer l’expérience, exécutez le code suivant dans votre notebook :

import mlflow

mlflow.set_experiment("sample-sklearn")

Entraîner un modèle scikit-learn

Après avoir mis en place l’expérience, vous créez un exemple de jeu de données et un modèle de régression logistique. Le code suivant lance une exécution MLflow et suit les métriques, les paramètres et le modèle de régression logistique final. Après avoir généré le modèle final, vous pouvez enregistrer le modèle résultant pour un suivi plus approfondi.

Exécutez le code suivant dans votre notebook et créez l’exemple de jeu de données et le modèle de régression logistique :

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

Charger et évaluer le modèle sur un exemple de jeu de données

Une fois le modèle enregistré, vous pouvez le charger pour l'inférence.

Exécutez le code suivant dans votre notebook et chargez le modèle, puis exécutez l’inférence sur un exemple de jeu de données :

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