在 Microsoft Fabric 中使用 scikit-learn 训练模型

本文介绍如何训练和跟踪 scikit-learn 模型的迭代。 scikit-learn 是一种常用的开放源代码机器学习框架,通常用于监督和非监督式学习。 该框架提供了用于模型拟合、数据预处理、模型选择、模型评估等的工具。

先决条件

在笔记本中安装 scikit-learn。 可以使用以下命令在环境中安装或升级 scikit-learn 版本:

pip install scikit-learn

设置机器学习实验

可以使用 MLFLow API 创建机器学习试验。 MLflow set_experiment() 函数将创建名为 sample-sklearn 的新机器学习试验(如果其尚不存在)。

在笔记本中运行以下代码,创建试验:

import mlflow

mlflow.set_experiment("sample-sklearn")

训练 scikit-learn 模型

在设置试验之后,需创建一个样本数据集和一个逻辑回归模型。 以下代码将启动一个 MLflow 运行,并跟踪指标、参数和最终逻辑回归模型。 生成最终模型后,我们将保存生成的模型以进行更多跟踪。

在笔记本中运行以下代码,并创建样本数据集和逻辑回归模型:

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

在示例数据集上加载和评估模型

保存模型后,就可以加载它进行推理。

在笔记本中运行以下代码并加载模型,然后在样本数据集上运行推理:

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