执行 Python 脚本
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
从机器学习试验执行 Python 脚本
类别: Python 语言模块
模块概述
本文介绍如何在 机器学习 Studio 中使用执行 Python 脚本模块 (经典) 来运行 Python 代码。 有关 Studio (经典) 中 Python 的体系结构和设计原则的详细信息,请参阅 以下文章。
使用 Python,可以执行现有 Studio 当前不支持的任务 (经典) 模块,例如:
- 使用
matplotlib
将数据可视化 - 使用 Python 库枚举工作区中的数据集和模型
- 导入数据模块不支持的从源中读取、加载和操作数据
机器学习 Studio (经典) 使用 Python 的 Anaconda 分发,其中包括许多用于数据处理的常见实用工具。
如何使用执行 Python 脚本
执行 Python 脚本模块包含可用于起点的示例 Python 代码。 若要配置执行 Python 脚本模块,请在“Python 脚本”文本框中提供要执行的一组输入和 Python 代码。
将 “执行 Python 脚本 ”模块添加到试验中。
滚动到 “属性 ”窗格底部,对于 Python 版本,请选择脚本中使用的 Python 库和运行时版本。
- Python 2.7.7 的 Anaconda 2.0 分发版
- Python 2.7.11 的 Anaconda 4.0 分发版
- Python 3.5 的 Anaconda 4.0 分发版 (默认)
建议在键入任何新代码之前设置版本。 如果以后更改版本,系统会提示你确认更改。
重要
如果在试验中使用 了执行 Python 脚本 模块的多个实例,则必须为实验中的所有模块选择单个版本的 Python。
在 Studio (要用于输入的经典) 中添加和连接 Dataset1 的任何数据集。 在 Python 脚本中将此数据集引用为 DataFrame1。
如果要使用 Python 生成数据,或者使用 Python 代码将数据直接导入到模块中,则可以选择使用数据集。
本模块支持在 Dataset2 上添加第二个 Studio (经典) 数据集。 在 Python 脚本中将第二个数据集引用为 DataFrame2。
使用此模块加载时,存储在 Studio (经典) 中的数据集会自动转换为 pandas data.frames。
若要包含新的 Python 包或代码,请在 脚本捆绑包中添加包含这些自定义资源的压缩文件。 脚本捆绑包的输入必须是已上传到工作区的压缩文件。 有关如何准备和上传这些资源的详细信息,请参阅 解压缩数据。
上传压缩存档中包含的任何文件都可以在试验执行期间使用。 如果存档中包含目录结构,则会保留该结构,但你必须在路径前面追加一个名为 src 的目录。
在“Python 脚本”文本框中,键入或粘贴有效的 Python 脚本。
Python 脚本文本框预先填充了注释中的一些说明,以及用于数据访问和输出的示例代码。 你必须编辑或替换此代码。 请务必遵循有关缩进和大小写的 Python 约定。
- 脚本必须包含名为
azureml_main
的函数作为此模块的入口点。 - 入口点函数最多可以包含两个输入参数:
Param<dataframe1>
和Param<dataframe2>
- 连接到第三个输入端口的压缩文件将被解压缩并存储在目录
.\Script Bundle
中,该目录还会添加到 Pythonsys.path
中。
因此,如果 zip 文件包含
mymodule.py
,请使用import mymodule
导入它。- 单个数据集可以返回到 Studio (经典) ,该) 必须是类型
pandas.DataFrame
序列。 可以在 Python 代码中创建其他输出,并将其直接写入 Azure 存储,或使用 Python 设备创建可视化效果。
- 脚本必须包含名为
运行试验,或选择模块,然后单击 “运行” 以仅运行 Python 脚本。
所有数据和代码都将加载到虚拟机中,并使用指定的 Python 环境运行。
结果
模块返回以下输出:
结果数据集。 嵌入的 Python 代码执行的任何计算结果都必须作为 pandas data.frame 提供,该帧会自动转换为机器学习数据集格式,以便可以将结果与实验中的其他模块一起使用。 模块限制为单个数据集作为输出。 有关详细信息,请参阅 数据表。
Python 设备。 此输出支持使用 Python 解释器的控制台输出和 PNG 图形显示。
如何附加脚本资源
执行 Python 脚本模块支持任意 Python 脚本文件作为输入,前提是它们事先准备好,并作为.ZIP文件的一部分上传到工作区。
将包含 Python 代码的 ZIP 文件Upload工作区
在 机器学习 Studio (经典) 的试验区域中,单击“数据集”,然后单击“新建”。
选择“ 从本地文件”选项。
在Upload新数据集对话框中,单击新数据集的类型下拉列表,然后选择 Zip 文件 (.zip) 选项。
单击“ 浏览 ”以找到压缩的文件。
键入用于工作区的新名称。 分配给数据集的名称将成为工作区中提取包含文件的文件夹的名称。
将压缩包上传到 Studio (经典) 后,请验证压缩文件是否在 “已保存的数据集 ”列表中可用,然后将数据集连接到 脚本捆绑包 输入端口。
ZIP 文件中包含的所有文件都可以在运行时使用:例如,示例数据、脚本或新的 Python 包。
如果压缩文件包含任何尚未安装在 机器学习 Studio (经典) 中的库,则必须将 Python 库包安装为自定义脚本的一部分。
如果存在目录结构,则会保留它。 但是,必须更改代码,以将目录 src 追加到路径。
调试 Python 代码
当代码被分解为具有明确定义的输入和输出的函数,而不是松散相关的可执行语句序列时, 执行 Python 脚本 模块效果最佳。
此 Python 模块不支持 Intellisense 和调试等功能。 如果模块在运行时失败,可以在模块的输出日志中查看一些错误详细信息。 但是,完整的 Python 堆栈跟踪不可用。 因此,我们建议用户在不同的环境中开发和调试其 Python 脚本,然后将代码导入模块。
可以查找的一些常见问题:
检查从中返回
azureml_main
的数据帧中的数据类型。 如果列包含数值类型和字符串以外的数据类型,则可能会出错。使用
dataframe.dropna()
从 Python 脚本导出时从数据集中删除 NA 值。 准备数据时,请使用 “清理缺失数据 ”模块。检查嵌入的代码是否存在缩进和空格错误。 如果收到错误“缩进Error:预期缩进块”,请参阅以下资源以获取指导:
已知的限制
Python 运行时是沙盒的,不允许以持久性方式访问网络或本地文件系统。
所有本地保存的文件都将隔离,并在模块完成后删除。 Python 代码无法访问运行它的计算机上的大部分目录,当前目录及其子目录除外。
将压缩文件作为资源提供时,文件将从工作区复制到试验执行空间,解压缩,然后使用。 复制和解压缩资源可能会占用内存。
该模块可以输出单个数据帧。 无法将任意 Python 对象(如训练的模型)直接返回到 Studio (经典) 运行时。 但是,可以将对象写入存储或工作区。 另一个选项是用于
pickle
将多个对象序列化为字节数组,然后在数据帧内返回数组。
示例
有关将 Python 脚本与 Studio (经典) 试验集成的示例,请参阅 Azure AI 库中的以下资源:
- 执行 Python 脚本:使用 执行 Python 脚本 模块使用文本标记化、词干处理和其他自然语言处理。
- Azure ML中的自定义 R 和 Python 脚本:指导你完成将自定义代码添加到 (R 或 Python) 、处理数据和可视化结果的过程。
- 分析 PyPI 数据以确定 Python 3 支持:估计 Python 3 的需求超出 Python 2.7 时使用 Python 2.7 的需求。