Treinar modelos com scikit-learn no Microsoft Fabric
Este artigo descreve como treinar e acompanhar as iterações de um modelo scikit-learn. O 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 fornece ferramentas para ajuste de modelo, pré-processamento de dados, seleção de modelos, avaliação de modelos e muito mais.
Pré-requisitos
Instale o scikit-learn no seu notebook. Você pode instalar ou atualizar a versão do scikit-learn em seu ambiente usando o seguinte comando:
pip install scikit-learn
Configurar a experiência de aprendizagem automática
Você pode criar um experimento de aprendizado de máquina usando a API MLFLow. A função MLflow set_experiment()
cria um novo experimento de aprendizado de máquina chamado sample-sklearn, caso ainda não exista.
Execute o seguinte código no seu bloco de notas e crie a experiência:
import mlflow
mlflow.set_experiment("sample-sklearn")
Preparar um modelo scikit-learn
Depois de configurar o experimento, você cria um conjunto de dados de exemplo e um modelo de regressão logística. O código a seguir inicia uma execução MLflow e rastreia as métricas, parâmetros e modelo de regressão logística final. Depois de gerar o modelo final, você pode salvar o modelo resultante para mais acompanhamento.
Execute o seguinte código em seu bloco de anotações 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
Depois de salvar o modelo, você pode carregá-lo para inferência.
Execute o seguinte código em seu bloco de anotações e 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()