共用方式為


使用 Microsoft Fabric 中的 Scikit-learn 來訓練模型

本文說明如何訓練和追蹤 Scikit-learn 模型的反覆項目。 Scikit-learn 是經常用於監督式和非監督式學習的熱門開放原始碼機器學習架構。 架構提供模型調整、資料前置處理、模型選取、模型評估等工具。

必要條件

在您的筆記本中安裝 Scikit-learn。 您可以使用下列命令,在您的環境中安裝或升級 Scikit-learn 版本:

pip install scikit-learn

設定機器學習實驗

您可以使用 MLFLow API 來建立機器學習實驗。 如果名稱為 sample-sklearn 的機器學習實驗尚未存在,MLflow set_experiment() 函數會建立一個新的機器學習實驗。

在您的筆記本中執行下列程式碼並建立實驗:

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