云端的数据科学:低代码/无代码方式 插图由@sketchthedocs绘制 :---: 云端的数据科学:低代码 - 插图由@nitya绘制 目录: 云端的数据科学:低代码/无代码方式 课前测验 引言 1.1 什么是 Azure 机器学习? 1.2 心脏衰竭预测项目: 1.3 心脏衰竭数据集: 在 Azure ML Studio 中的低代码/无代码模型训练 2.1 创建 Azure ML 工作区 2.2 计算资源 2.2.1 选择适合你的计算资源选项 2.2.2 创建计算集群 2.3 加载数据集 2.4 使用 AutoML 进行低代码/无代码训练 低代码/无代码模型部署和端点消费 3.1 模型部署 3.2 端点消费 挑战 课后测验 复习与自学 作业 课前测验 引言 1.
![]() |
|---|
| 云端的数据科学:低代码 - 插图由@nitya绘制 |
目录:
Azure 云平台提供了超过 200 种产品和服务,旨在帮助你将新解决方案带入生活。
数据科学家需要花费大量精力来探索和预处理数据,并尝试各种类型的模型训练算法以生成准确的模型。这些任务耗时且往往不能有效利用昂贵的计算硬件。
Azure ML 是一个基于云的平台,在 Azure 上构建和操作机器学习解决方案。它包括一系列功能和能力,帮助数据科学家准备数据、训练模型、发布预测服务并监控其使用情况。最重要的是,它通过自动化许多与模型训练相关的耗时任务来提高他们的效率;并且它使他们能够使用可有效扩展的基于云的计算资源,以处理大量数据,同时仅在实际使用时产生成本。
Azure ML 提供了开发人员和数据科学家构建其机器学习工作流所需的所有工具。这些包括:
毫无疑问,制作和构建项目是检验技能和知识的最佳方法。在这节课中,我们将探索两种不同的方式,在 Azure ML Studio 中为心脏衰竭预测项目构建数据科学项目,分别是通过低代码/无代码和通过 Azure ML SDK。如下图所示:

每种方式都有其优缺点。低代码/无代码方式更容易开始,因为它涉及与图形用户界面 (GUI) 交互,不需要任何编程知识。这种方法可以快速测试项目的可行性并创建概念验证 (POC)。然而,随着项目的增长,需要使其生产就绪时,通过 GUI 创建资源是不切实际的。我们需要从资源创建到模型部署的一切都可以编程自动化。这就是知道如何使用 Azure ML SDK 变得至关重要的地方。
| 低代码/无代码 | Azure ML SDK | |
|---|---|---|
| 编码专业知识 | 不需要 | 需要 |
| 开发时间 | 快速且简单 | 根据编码专长而定 |
| 生产就绪 | 否 | 是 |
心血管疾病 (CVDs) 是全球头号死因,占全球死亡人数的 31%。环境和行为风险因素,如烟草使用、不健康的饮食和肥胖、体力活动不足和有害饮酒等,可以用作估计模型的特征。能够估计心血管疾病的发展概率对于预防高危人群的心脏病发作非常有用。
Kaggle 公开了一套 心脏衰竭数据集,我们将用这个数据集来进行该项目。你可以现在下载数据集。这是一个包含 13 列(12 个特征和 1 个目标变量)和 299 行的表格数据集。
| 变量名 | 类型 | 描述 | 示例 | |
|---|---|---|---|---|
| 1 | 年龄 | 数值 | 患者的年龄 | 25 |
| 2 | 贫血 | 布尔 | 红细胞或血红蛋白减少 | 0 或 1 |
| 3 | 肌酸磷酸激酶 | 数值 | 血液中的 CPK 酶水平 | 542 |
| 4 | 糖尿病 | 布尔 | 患者是否有糖尿病 | 0 或 1 |
| 5 | 射血分数 | 数值 | 每次收缩时离开心脏的血液百分比 | 45 |
| 6 | 高血压 | 布尔 | 患者是否患有高血压 | 0 或 1 |
| 7 | 血小板 | 数值 | 血液中的血小板数量 | 149000 |
| 8 | 血清肌酐 | 数值 | 血液中的血清肌酐水平 | 0.5 |
| 9 | 血清钠 | 数值 | 血液中的血清钠水平 | jun |
| 10 | 性别 | 布尔 | 女性或男性 | 0 或 1 |
| 11 | 吸烟 | 布尔 | 患者是否吸烟 | 0 或 1 |
| 12 | 随访期 | 数值 | 随访期(天) | 4 |
| ---- | --------------------------- | -------------- | ----------------------------------------------------- | ------------------- |
| 21 | 死亡事件 [目标] | 布尔 | 患者在随访期内是否死亡 | 0 或 1 |
一旦你有了数据集,我们就可以在 Azure 中开始项目。
要在 Azure ML 中训练模型,首先需要创建一个 Azure ML 工作区。工作区是 Azure 机器学习的顶级资源,提供了一个集中区域来管理你在使用 Azure 机器学习时创建的所有工件。工作区保存了所有训练运行的历史记录,包括日志、指标、输出以及脚本的快照。你可以使用这些信息来确定哪个训练运行产生了最佳模型。了解更多
建议使用与操作系统兼容的最新浏览器。以下浏览器受支持:
要使用 Azure 机器学习,请在你的 Azure 订阅中创建一个工作区。然后你可以使用此工作区来管理数据、计算资源、代码、模型和其他与机器学习工作负载相关的工件。
注意: 只要你的 Azure 机器学习工作区存在于订阅中,你的 Azure 订阅将被收取少量的数据存储费用,因此我们建议在不再使用时删除 Azure 机器学习工作区。
使用与你的 Azure 订阅关联的 Microsoft 凭据登录 Azure 门户。
选择 +创建资源

搜索“机器学习”并选择“机器学习”磁贴

单击创建按钮
 请按以下设置填写: - 订阅:你的 Azure 订阅 - 资源组:创建或选择一个资源组 - 工作区名称:为你的工作区输入一个唯一的名称 - 区域:选择你所在地理位置最近的区域 - 存储账户:注意将为你工作区创建的默认新存储账户 - 密钥保管库:注意将为你工作区创建的默认新密钥保管库 - 应用洞察:注意将为你工作区创建的默认新应用洞察资源 - 容器注册表:无(首次部署模型到容器时会自动生成一个)  - 点击“创建+审查”,然后点击“创建”按钮 等待你的工作区创建完成(这可能需要几分钟)。然后在门户中找到它。你可以通过 Azure 机器学习服务找到它。  在 Azure 机器学习工作室中,点击左上角的☰图标以查看界面中的各个页面。你可以使用这些页面来管理工作区中的资源。  你可以使用 Azure 门户来管理你的工作区,但对于数据科学家和机器学习操作工程师来说,Azure 机器学习工作室提供了更专注的用户界面来管理工作区资源。 ### 2.2 计算资源 计算资源是在云上运行模型训练和数据探索过程的资源。你可以创建四种类型的计算资源: - **计算实例**:数据科学家可以使用的开发工作站。这涉及创建虚拟机(VM)并启动笔记本实例。然后,你可以通过调用笔记本中的计算集群来训练模型。 - **计算集群**:可扩展的 VM 集群,用于按需处理实验代码。当你训练模型时需要它。计算集群还可以使用专门的 GPU 或 CPU 资源。 - **推理集群**:预测服务的部署目标,使用你训练好的模型。 - **附加计算**:链接到现有的 Azure 计算资源,如虚拟机或 Azure Databricks 集群。 #### 2.2.1 选择合适的计算资源选项 在创建计算资源时,需要考虑一些关键因素,这些选择可能是非常重要的决策。 **CPU 还是 GPU?** CPU(中央处理器)是执行计算机程序指令的电子电路。GPU(图形处理器)是一种专门的电子电路,可以以非常高的速度执行与图形相关的代码。 CPU 和 GPU 架构的主要区别在于,CPU 设计用于快速处理多种任务(由 CPU 时钟速度衡量),但并发任务的数量有限。GPU 专为并行计算设计,因此在深度学习任务方面表现更好。 | CPU | GPU | |-----------------------------------------|-----------------------------| | 较便宜 | 较昂贵 | | 较低的并发级别 | 较高的并发级别 | | 深度学习模型训练较慢 | 深度学习模型训练最佳 | **集群大小** 较大的集群成本更高,但响应速度更快。因此,如果你时间充裕但资金不足,可以从一个小集群开始。相反,如果你资金充足但时间不多,可以从一个较大的集群开始。 **VM 大小** 根据你的时间和预算限制,你可以调整 RAM、磁盘、核心数量和时钟速度。增加所有这些参数将更加昂贵,但性能会更好。 **专用实例还是低优先级实例?** 低优先级实例意味着它是可中断的:基本上,微软 Azure 可以把这些资源分配给其他任务,从而中断作业。专用实例,即不可中断的实例,意味着除非得到你的许可,否则作业不会被终止。 这也是时间和金钱之间的另一种权衡,因为低优先级实例比专用实例便宜。 #### 2.2.2 创建计算集群 在我们之前创建的 [Azure ML 工作区](https://ml.azure.com/)中,转到计算部分,你将能够看到我们刚刚讨论的不同计算资源(即计算实例、计算集群、推理集群和附加计算)。对于这个项目,我们需要一个计算集群来进行模型训练。在工作室中,点击“计算”菜单,然后点击“计算集群”标签,点击“+ 新建”按钮来创建一个计算集群。  1. 选择你的选项:专用还是低优先级,CPU 还是 GPU,VM 大小和核心数量(对于这个项目,你可以保留默认设置)。 2. 点击“下一步”按钮。  3. 给集群起一个计算名称。 4. 选择你的选项:最小/最大节点数,空闲秒数后缩放,SSH 访问。注意,如果最小节点数为 0,集群空闲时你将节省资金。注意,最大节点数越高,训练时间越短。推荐的最大节点数为 3。 5. 点击“创建”按钮。此步骤可能需要几分钟。  太棒了!现在我们有了计算集群,我们需要将数据加载到 Azure ML 工作室中。 ### 2.3 加载数据集 1. 在我们之前创建的 [Azure ML 工作区](https://ml.azure.com/)中,点击左侧菜单中的“数据集”,然后点击“+ 创建数据集”按钮来创建一个数据集。选择“从本地文件”选项,并选择我们之前下载的 Kaggle 数据集。  2. 给你的数据集命名,选择类型和描述。点击下一步。上传文件中的数据。点击下一步。  3. 在模式中,将以下特征的数据类型更改为布尔型:贫血、糖尿病、高血压、性别、吸烟、DEATH_EVENT。点击下一步并点击创建。  太好了!现在数据集已经就位,计算集群也已创建,我们可以开始模型训练了! ### 2.4 使用 AutoML 进行低代码/无代码训练 传统的机器学习模型开发非常耗资源,需要大量的领域知识和时间来生成和比较数十个模型。 自动化机器学习(AutoML)是自动化机器学习模型开发中耗时且迭代任务的过程。它允许数据科学家、分析师和开发人员以高规模、高效性和生产力构建 ML 模型,同时保持模型质量。它减少了生成生产就绪 ML 模型所需的时间,且非常简便和高效。[了解更多](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) 1. 在我们之前创建的 [Azure ML 工作区](https://ml.azure.com/)中,点击左侧菜单中的“自动机器学习”并选择你刚刚上传的数据集。点击下一步。  2. 输入新的实验名称,目标列(DEATH_EVENT)和我们创建的计算集群。点击下一步。  3. 选择“分类”并点击完成。这一步可能需要 30 分钟到 1 小时,具体取决于你的计算集群大小。  4. 一旦运行完成,点击“自动机器学习”标签,点击你的运行,在“最佳模型摘要”卡片中点击算法。  在这里,你可以看到 AutoML 生成的最佳模型的详细描述。你也可以在“模型”标签中探索其他生成的模型。花点时间探索“解释”(预览按钮)中的模型。一旦选择了要使用的模型(在这里我们将选择 AutoML 选择的最佳模型),我们将看看如何部署它。 ## 3. 低代码/无代码模型部署和端点消费 ### 3.1 模型部署 自动机器学习界面允许你在几步内将最佳模型部署为 Web 服务。部署是将模型集成以便基于新数据进行预测并识别潜在机会的过程。对于这个项目,Web 服务部署意味着医疗应用程序将能够使用该模型来实时预测患者的心脏病风险。 在最佳模型描述中,点击“部署”按钮。  15. 给它一个名称,描述,计算类型(Azure 容器实例),启用身份验证并点击部署。这一步可能需要大约 20 分钟才能完成。部署过程包括注册模型、生成资源和配置它们以供 Web 服务使用。部署状态下方会出现状态消息。选择定期刷新以检查部署状态。当状态为“健康”时,它已部署并正在运行。  16. 一旦部署完成,点击“端点”标签并点击你刚刚部署的端点。在这里你可以找到关于端点的所有必要信息。  太棒了!现在我们有了部署好的模型,我们可以开始端点的消费了。 ### 3.2 端点消费 点击“消费”标签。在这里,你可以找到 REST 端点和消费选项中的 Python 脚本。 这段脚本可以直接从你的本地机器运行并消费你的端点。  花点时间检查这两行代码: ```python url = 'http://98e3715f-xxxx-xxxx-xxxx-9ec22d57b796.centralus.azurecontainer.io/score' api_key = '' # Replace this with the API key for the web service
url variable is the REST endpoint found in the consume tab and the api_key 变量也是在消费标签中找到的主键(仅在启用了身份验证的情况下)。这就是脚本如何消费端点的方式。
b'"{\\"result\\": [true]}"'
这意味着给定数据的心脏病发作预测结果为真。这很有道理,因为如果你仔细查看脚本自动生成的数据,你会发现一切都是默认的 0 和 False。你可以通过以下输入样本更改数据:
data = { "data": [ { 'age': "0", 'anaemia': "false", 'creatinine_phosphokinase': "0", 'diabetes': "false", 'ejection_fraction': "0", 'high_blood_pressure': "false", 'platelets': "0", 'serum_creatinine': "0", 'serum_sodium': "0", 'sex': "false", 'smoking': "false", 'time': "0", }, { 'age': "60", 'anaemia': "false", 'creatinine_phosphokinase': "500", 'diabetes': "false", 'ejection_fraction': "38", 'high_blood_pressure': "false", 'platelets': "260000", 'serum_creatinine': "1.40", 'serum_sodium': "137", 'sex': "false", 'smoking': "false", 'time': "130", }, ], }
脚本应该返回:python b'"{\\"result\\": [true, false]}"'
恭喜!你刚刚消费了在 Azure ML 上训练和部署的模型!
注: 项目完成后,别忘了删除所有资源。
仔细查看 AutoML 为顶级模型生成的模型解释和细节。尝试理解为什么最佳模型比其他模型更好。比较了哪些算法?它们之间有什么不同?为什么在这种情况下最佳模型表现得更好?
在这节课中,你学习了如何以低代码/无代码方式在云端训练、部署和消费一个预测心脏病风险的模型。如果你还没有这样做,深入研究 AutoML 为顶级模型生成的模型解释,尝试理解为什么最佳模型优于其他模型。
你可以通过阅读这份文档进一步了解低代码/无代码 AutoML。
**声明**: 本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。