2018 年 1 月
第 33 卷,第 1 期
此文章由机器翻译
人工智能 - 在 Azure ML Workbench 中创建模型
通过Frank La La |年 1 月 2018
在我的最后一列,我引入了 Azure 机器学习 Workbench (Azure ML Workbench) 专业人员的数据科学家和机器学习 (ML) 专业人员的新工具。这代表形成鲜明对比到 Azure Machine Learning Studio (Azure ML Studio 中),这是主要面向新手设计的工具。但是,这并不意味着 Azure ML Workbench 是仅对有经验的数据科学家。中间甚至入门级的数据科学家可以是有益的 Azure ML Workbench 中提供的工具。
加载的 Iris 分类器项目模板
如我以前的列中所述,Azure ML Workbench 提供了大量 (我使用线性回归模板) 的项目模板。这一次我将使用分类 Iris 项目模板,以演示了更多的 Azure ML Workbench 的功能。如果你尚未安装 Azure ML Workbench,请参阅参考文档,网址bit.ly/2j2NVdH。
Iris 数据集是一种多变量数据组,包含来自以下每三个指定的 Iris 50 示例。四个功能测量从每个示例: 长度和 sepals 和花瓣的宽度。基于这些四个功能组合,可确定的 Iris 指定。它是在数据科学和 ML oft 使用示例数据集。
打开 Azure ML Workbench,选择项目,然后单击加号。在显示的上下文菜单,选择新的项目来创建新项目。将项目 IrisClassifier。查找分类的 Iris 项目模板中,单击它,然后单击创建按钮 (请参阅图 1)。
图 1 选择分类 Iris 项目模板
查看代码
项目将加载到 Azure ML Workbench,单击文件夹图标左侧,以显示所有包含的文件。单击 iris_sklearn.py 文件以在编辑器中查看其内容。其外观应类似于图 2。
图 2 iris_sklearn.py 文件在 Azure ML Workbench 文本编辑器
如果你想,代码都处于 Python,与数据科学家和 ML 从业流行的语言。Python 喜欢 ML,的多样性科学和绘图语言提供的工具和实用程序的丰富生态系统的库。以下方法之一是 scikit 的了解,常用的 ML 库。Scikit 的各个部分的了解,称为 sklearn 在代码中,导入到 14 七行中的项目。Python 语言的完整教程超出本文的范围,尽管语法应为任何 C# 开发人员所熟悉。此处的重点将生成具有 scikit 模型的了解。
Azure ML Workbench 项目的工作流
任何 ML 项目中的第一步加载数据。第二步通常是更费力且耗时: 纠纷持续数据。这是其中 Azure ML Workbench 至关重要。单击 iris.csv 文件以查看原始数据的外观。请注意此文件缺少列名称。现在,单击屏幕左侧的 iris.dprep 文件列表。请注意采取清理数据的步骤数。这些步骤将名称添加到列,删除指定列为 null 的行。单击筛选器指定步骤右侧的向下箭头。显示上下文菜单中单击编辑显示筛选列对话框中所示图 3。规则设置以删除指定列为 null 的任何行。请注意,有一些其他选项以添加额外条件。此对话框中将会在有数据很少进入 ML 算法使用的干净格式在数据科学项目中,有用工具。
图 3 筛选列对话框窗口
引用的各种库并初始化后的本地环境,代码将加载数据,通过执行该 iris.dprep 文件行 28,该程序加载数据文件并执行定义的所有步骤上:
iris = run('iris.dprep', dataflow_idx=0, spark=False)
输出是使用已清理数据 pandas 数据帧。Pandas 数据帧是类似于在 SQL 数据库或电子表格中的一个表格的二维数据结构。你可以阅读更多有关数据在框架bit.ly/2BlWl6K。
现在,得到清理和加载数据,就可以将数据划分为功能和标签。功能构成了所需来进行预测的各种字段。在这种情况下,Sepals 和花瓣给定的宽度和长度,算法将预测工厂属于 Iris 哪些指定。在这种情况下,功能是:花萼长度、 花萼宽度、 花瓣长度和花瓣宽度。指定的标签或预测的值。Iris_sklearn.py 文件中的 32 条线分隔成两个数组的数据帧:如下所示的标签 X 有关功能和 Y (严格地说,X 和 Y 是 NumPy 数组,NumPy 库中的数据结构):
X, Y = iris[['Sepal Length', 'Sepal Width', 'Petal Length',
'Petal Width']].values, iris['Species'].values
一旦数据分为标签和功能,就可以将数据划分为定型集和测试集。以下代码行随机保留 35%的输入数据集中的行,并将其放置到 Y_train 和 Y_test;剩余的 65%进入 X_train 和 X_test:
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.35,
random_state=0
在受监督学习是已知给标签的正确值。训练算法后通过传递给它的功能和标签。该算法然后发现的关系和模式之间的功能和正确的标签。以下行创建的针对定型数据的逻辑回归算法 ML 模型:
clf1 = LogisticRegression(C=1/reg).fit(X_train, Y_train)
逻辑回归是一种统计方法,分析数据集在有确定结果的一个或多个变量 (bit.ly/2zQ1hVe)。在这种情况下,sepals 和花瓣维度确定 Iris 指定。
训练后,该算法的准确性测试了模型上调用评分法:
accuracy = clf1.score(X_test, Y_test)
print ("Accuracy is {}".format(accuracy))
理解这一点的最好办法是实际运行的代码。但是,可以进行之前,是一个步骤。此项目使用 matplotlib,Python 的常用绘图库。若要安装它,请从文件菜单中选择打开命令提示符。在命令行中,键入以下命令:
pip install matplotlib
安装完成后,键入以下内容到命令行:
python iris_sklearn.py
在几分钟后,输出应如下所示图 4。
图 4 的 iris_sklearn.py 程序输出
显示在命令窗口中,模型的准确性是 0.6792452830188679,这意味着,它正确猜测测试数据中的 Iris 指定 67.92%的时间。
执行从在 Azure ML Workbench 内的代码
尽管在命令行中运行代码很有用,Azure ML Workbench 使您能够使此更简单并且捕获有关已运行的作业信息。查找运行按钮。到它的即时左侧,有两个下拉列表和一个文本框。默认情况下,其外观应类似图 5。单击“运行”。
图 5: 运行 Azure ML Workbench 中的文件
这执行本地脚本,并通过 Azure ML Workbench 中的作业选项卡中跟踪执行脚本。运行该程序后,将显示输出和有关运行的详细信息。若要查看的请单击运行的列表中的 iris_sklearn.py 条目。在下运行的数据网格中选择第一条记录。查看运行属性部分,请参阅的运行的基本性能统计信息。向下的滚动到度量值,请参阅和可视化效果部分以查看脚本的输出中所示图 6。
图 6 个度量值和 Azure ML Workbench 中所示的可视化效果
在我以前的文章,我将说明如何浏览作业的结果和查看作业历史记录。有关更多详细信息,请参阅与 (msdn.com/magazine/mt814414)。
保留训练的模型
运行时 iris_sklearn.py 脚本是通过 Azure ML Workbench 或命令行,你可能会注意到该过程需要几秒钟时间。在我 Surface Book,需要大约九个秒钟的时间。尽管不同的硬件配置将生成不同的结果,过程是几乎可瞬时完成。大部分的处理时间用于训练模型。幸运的是,存在很少需要不断训练模型。行通过 82 79 需要经过训练的模型,并将其磁盘使用 Pickle 库保留 (bit.ly/2im9w3O):
print ("Export the model to model.pkl")
f = open('./outputs/model.pkl', 'wb')
pickle.dump(clf1, f)
f.close()
线条 86 和 87 演示如何从磁盘还原经过训练的模型:
f2 = open('./outputs/model.pkl', 'rb')
clf2 = pickle.load(f2)
下一步是创建一些示例数据并使用模型来预测指定,在第 89 和 98 行完成:
# Predict on a new sample
X_new = [[3.0, 3.6, 1.3, 0.25]]
print ('New sample: {}'.format(X_new))
# Add random features to match the training data
X_new_with_random_features = np.c_[X_new, random_state.randn(1, n)]
# Score on the new sample
pred = clf2.predict(X_new_with_random_features)
print('Predicted class is {}'.format(pred))
如果您回头参考图 4,您可以看到向屏幕快照的较低的中央预测的类是 [Iris-setosa]。
传递参数
你可能已经注意到运行按钮旁边的参数文本框。更早版本,我保留此字段为空。
在 iris_sklearn.py 文件中,第 47 和 48,行检查的参数,存在的值转换为浮点数,,然后将 reg 变量设置为其值。如果任何参数不发送到程序时,该变量将保留它使用行 45 初始化的值:0.01,如下所示:
if len(sys.argv) > 1:
reg = float(sys.argv[1])
注册表值作为参数传递给 LogisticRegression 方法和设置的正则化速率。正则化速率控制以避免过度拟合模型的其他信息的简介。模型中执行太好测试数据时发生过度拟合。使用测试数据提供高准确的结果的模型将可能在给定测试将来集之外的数据不可用。有关正则化和过度拟合详细信息位于bit.ly/2kfLU1f和bit.ly/2iatJpC分别。
在参数文本框中输入数字 10,然后单击运行一次,并确保,本地和 iris_sklearn.py 都已选中。完成后,单击作业选项卡,浏览通过它,然后选择 iris_sklearn.py。请注意,图表现在具有第二个数据点,如中所示图 7。
图 7 A 第二个数据点添加到 iris_sklearn.py 作业选项卡图表
现在,单击文件图标,并单击 run.py 文件。此程序将调用与新的正则化参数,它是以前运行一半的值,直到值获取下面 0.005 iris_sklearn.py 文件。由于我已运行脚本,其中 10 参数,我想要更改第七个到五行。不过,你可能已经已注意到,文本并不是可编辑。若要编辑的文本,单击要切换到编辑模式的文本区域的左上角部分上的下拉菜单。没有用于在另一个程序中,如 Visual Studio 代码编辑选项。但是,在这种情况下,选择编辑在 Workbench 文本编辑器中 (请参阅图 8)。
图 8 切换到编辑模式
将第 7 行更改为 reg 后 = 5,单击保存图标。接下来,单击上打开命令提示符从以下命令然后按 enter 的文件菜单和类型:
python run.py
该程序将运行并将命令传递给要通过 Azure Azure ML Workbench 系统运行 iris_sklearn.py 文件使基础操作系统。请注意在命令行窗口中,在 Azure Azure ML Workbench 程序内的作业窗格中的程序输出:
os.system('az ml experiment submit -c local ./iris_sklearn.py {}'.format(reg))
单击屏幕左侧工具栏中的作业图标,然后单击 iris_sklearn.py 的条目。请注意多少多个数据点的数量都在关系图。Run.py 程序执行脚本多次使用不同的正则化汇率每次。
总结
在本文中,我介绍了常见的样本数据集数据科学与 Azure ML Workbench,演示的功能和灵活性的程序中。虽然不是很简单或作为 Azure ML Studio 便于访问,Azure ML Workbench 打开了很多数据科学家和 ML 实践者的可能性。首先是能够安装和使用包括 Pickle,matplotlib 和,当然,Sci 工具包了解任何 Python 库。此外还有一个命令行接口,可以接受命令以安装 Python 库和 Azure ML Workbench 内的跟踪作业方式运行 Python 代码。跟踪的作业具有浏览结果以图形方式以使数据试验更快的益处。
Azure ML Workbench 包括几个更多的功能,我将浏览在将来文章,如对 Jupyter 笔记本、 源代码管理集成和 Docker 映像的支持。该工具真正使出色的功能,为数据科学字段。
Frank La Vigne 负责领导 Wintellect 的数据与分析实践,共同主持 DataDriven 播客。他定期在 FranksWorld.com 上发表博客,你还可以在他的 YouTube 频道“Frank’s World TV”(FranksWorld.TV) 中看到他。
衷心感谢以下技术专家对本文的审阅:Andy Leonard