SynapseML 工具生态系统在多个新空间中扩展了 Apache Spark 分布式计算框架。 SynapseML 向 Spark 生态系统添加了许多深度学习和数据科学工具:
- 将 Spark 机器学习管道与 Microsoft 认知工具包(CNTK)无缝集成
- LightGBM
- OpenCV
这些工具可为许多类型的数据源提供强大且高度可缩放的预测和分析模型。
本部分介绍如何训练 SynapseML 模型。
先决条件
导入 numpy 和 pandas:
import numpy as np
import pandas as pd
读入数据
典型的 Spark 应用程序涉及存储在分布式文件系统上的大型数据集,例如 HDFS。 但是,若要简化此处的事项,请从 URL 复制小型数据集。 然后,使用 Pandas CSV 读取器将此数据读入内存中,并将数据分发为 Spark 数据帧。 最后,显示数据集的前五行:
dataFile = "AdultCensusIncome.csv"
import os, urllib
if not os.path.isfile(dataFile):
urllib.request.urlretrieve("https://mmlspark.azureedge.net/datasets/" + dataFile, dataFile)
data = spark.createDataFrame(pd.read_csv(dataFile, dtype={" hours-per-week": np.float64}))
data.show(5)
选择特征并拆分数据,以便训练和测试集
选择要在我们的模型中使用的一些功能。 可以尝试不同的功能,但应该包括 " income"
,因为它是模型尝试预测的标签列。 然后将数据拆分为 train
和 test
集:
data = data.select([" education", " marital-status", " hours-per-week", " income"])
train, test = data.randomSplit([0.75, 0.25], seed=123)
训练模型
若要训练分类器模型,请使用该 synapse.ml.TrainClassifier
类。 它采用训练数据和基础 SparkML 分类器,将数据转换为基础分类器算法期望的格式,并拟合模型。
from synapse.ml.train import TrainClassifier
from pyspark.ml.classification import LogisticRegression
model = TrainClassifier(model=LogisticRegression(), labelCol=" income").fit(train)
TrainClassifier
隐式处理字符串值列并对标签列进行二进制处理。
对模型评分和评估
最后,针对测试集对模型评分,并使用 synapse.ml.ComputeModelStatistics
类计算:
- 准确性
- AUC
- 精准率
- 召回率
来自评分数据的指标:
from synapse.ml.train import ComputeModelStatistics
prediction = model.transform(test)
metrics = ComputeModelStatistics().transform(prediction)
metrics.select('accuracy').show()
就是这样! 使用 SynapseML 包构建了第一个机器学习模型。 使用 Python help()
函数详细了解 SynapseML 类和方法:
import synapse.ml.train.TrainClassifier
help(synapse.ml.train.TrainClassifier)