本文介绍如何使用 SynapseML 生成机器学习模型,以及如何简化复杂的机器学习任务。 使用 SynapseML 构建一个包含特征工程阶段和 LightGBM 回归阶段的训练管道。 该管道从书评文本预测评级。 下面介绍如何将预生成模型与 SynapseML 配合使用来解决机器学习问题。
先决条件
获取 Microsoft Fabric 订阅。 或者注册免费的 Microsoft Fabric 试用版。
登录 Microsoft Fabric。
使用主页左下侧的体验切换器切换到 Fabric。
准备资源
设置生成模型和管道所需的工具和资源。
- 创建新笔记本
- 将笔记本附加到湖屋。 在 资源管理器中,展开 Lakehouses,然后选择添加。
- 按照快速入门:为 Azure AI 服务创建多服务资源中的指示,获取 Azure AI 服务密钥。
- 创建 Azure Key Vault 实例,并将 Azure AI 服务密钥作为机密添加到密钥保管库。
- 记录密钥保管库名称和机密名称。 需要此信息以执行后文中的一步转换。
设置环境
在笔记本中,导入 SynapseML 库并初始化 Spark 会话。
from pyspark.sql import SparkSession
from synapse.ml.core.platform import *
spark = SparkSession.builder.getOrCreate()
加载数据集
加载数据集并将其拆分为训练集和测试集。
train, test = (
spark.read.parquet(
"wasbs://publicwasb@mmlspark.blob.core.windows.net/BookReviewsFromAmazon10K.parquet"
)
.limit(1000)
.cache()
.randomSplit([0.8, 0.2])
)
display(train)
创建训练管道
创建一个管道,该管道使用 TextFeaturizer 库中的 synapse.ml.featurize.text 来特征化数据,并使用 LightGBMRegressor 函数派生分级。
from pyspark.ml import Pipeline
from synapse.ml.featurize.text import TextFeaturizer
from synapse.ml.lightgbm import LightGBMRegressor
model = Pipeline(
stages=[
TextFeaturizer(inputCol="text", outputCol="features"),
LightGBMRegressor(featuresCol="features", labelCol="rating", dataTransferMode="bulk")
]
).fit(train)
预测测试数据的输出
在模型上调用 transform 函数,以预测测试数据的输出并将其显示为数据帧。
display(model.transform(test))
使用 Azure AI 服务一步转换数据
或者,对于具有预生成解决方案的此类任务,可以使用 SynapseML 与 Azure AI 服务的集成一步转换数据。 运行以下代码,并进行下述替换:
- 将
<secret-name>替换为 Azure AI 服务钥匙机密的名称。 - 将
<key-vault-name>替换为你的密钥保管库名称。
from synapse.ml.services import TextSentiment
from synapse.ml.core.platform import find_secret
model = TextSentiment(
textCol="text",
outputCol="sentiment",
subscriptionKey=find_secret("<secret-name>", "<key-vault-name>")
).setLocation("eastus")
display(model.transform(test))