Compartilhar via


Treinar modelos com a scikit-learn no Microsoft Fabric

Este artigo descreve como treinar e acompanhar as iterações de um modelo scikit-learn. Scikit-learn é uma estrutura popular de aprendizado de máquina de código aberto frequentemente usada para aprendizado supervisionado e não supervisionado. A estrutura também oferece ferramentas para ajuste de modelos, pré-processamento de dados, seleção de modelos, avaliação de modelos e muito mais.

Pré-requisitos

Instale a scikit-learn no seu notebook. Você pode instalar ou atualizar a versão da scikit-learn no seu ambiente usando o seguinte comando:

pip install scikit-learn

Configurar o experimento de machine learning

Você pode criar um experimento de aprendizado de máquina usando a API MLFLow. A função set_experiment() do MLflow criará um novo experimento de aprendizado de máquina denominado sample-sklearn, se ele ainda não existir.

Execute o seguinte comando em um notebook e crie o experimento:

import mlflow

mlflow.set_experiment("sample-sklearn")

Treinar um modelo scikit-learn

Depois de configurar o experimento, você criará um conjunto de dados de exemplo e um modelo de regressão logística. O código a seguir iniciará uma execução do MLflow e acompanhará as métricas, os parâmetros e o modelo final de regressão logística. Depois de gerar o modelo final, você poderá salvar o modelo resultante para mais acompanhamento.

Execute o código a seguir no notebook e crie o conjunto de dados de exemplo e o modelo de regressão logística:

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

Carregar e avaliar o modelo em um conjunto de dados de exemplo

Após salvar o modelo, você poderá carregá-lo para inferência.

Execute o código a seguir no notebook, carregue o modelo e, em seguida, execute a inferência em um conjunto de dados de exemplo:

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