Entrenamiento de modelos con scikit-learn en Microsoft Fabric

Scikit-learn (scikit-learn.org) es un conocido marco de aprendizaje automático de código abierto. Se usa con frecuencia para el aprendizaje supervisado y no supervisado. También proporciona varias herramientas para el ajuste del modelo, el preprocesamiento de datos, la selección de modelos, la evaluación del modelo, etc.

En esta sección, veremos un ejemplo de cómo puede entrenar y realizar un seguimiento de las iteraciones del modelo de Scikit-Learn.

Instalación de scikit-learn

Para empezar a trabajar con scikit-learn, debe asegurarse de que está instalado en el cuaderno. Puede instalar o actualizar la versión de scikit-learn en su entorno mediante el siguiente comando:

%pip install scikit-learn

A continuación, crearemos un experimento de aprendizaje automático mediante la API de MLFLow. La API de set_experiment() de MLflow creará un nuevo experimento de aprendizaje automático si aún no existe.

import mlflow

mlflow.set_experiment("sample-sklearn")

Entrenamiento de un modelo de scikit-learn

Una vez creado el experimento, crearemos un conjunto de datos de ejemplo y crearemos un modelo de regresión logística. También iniciaremos una ejecución de MLflow y realizaremos un seguimiento de las métricas, los parámetros y el modelo de regresión logística final. Una vez que hayamos generado el modelo final, también guardaremos el modelo resultante para un seguimiento adicional.

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

Carga y evaluación del modelo en un conjunto de datos de ejemplo

Una vez guardado el modelo, también se puede cargar para la inferencia. Para ello, cargaremos el modelo y ejecutaremos la inferencia en un conjunto de datos de ejemplo.

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