分区和采样
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
基于采样创建数据集的多个分区
类别: 数据转换/采样和拆分
模块概述
本文介绍如何使用 机器学习 Studio (经典 ) 中的分区和示例模块对数据集执行采样,或者从数据集创建分区。
采样是机器学习中的一个重要工具,因为通过采样可以减小数据集的大小,同时使值的比率保持相同。 本模块支持在机器学习中非常重要的几个相关任务:
将数据划分为多个大小相同的小节。
可以将分区用于交叉验证,或用于将事例分配给随机组。
将数据分成组,然后处理特定组中的数据。
将事例随机分配给不同的组后,可能需要修改只与一个组关联的特征。
采样。
可以提取一定百分比的数据,应用随机采样,也可以选择一列用于均衡数据集并对其值进行分层采样。
创建更小的数据集用于测试。
如果有许多数据,你可能想要在设置试验时仅使用前 n 行,然后在生成模型时切换到使用完整数据集。 也可以使用采样创建更小的数据集,以便在开发环境中使用。
如何配置分区和示例
本模块支持用于将数据划分到多个分区或进行采样的多种方法。 请先选择方法,然后设置方法所需的其他选项。
- 获取行数排名前
获取数据集中的前 N 行
使用此模式只能获取前 n 行。 如果要对少量行测试试验,并且不需要以任何方式均衡或采样数据,则此选项非常有用。
将" 分区和示例 "模块添加到工作室中的试验 (经典) ,并连接数据集。
分区模式或采样模式:将此选项设置为“Head”。
要选择的行数:键入要返回的行数。
指定的行数必须为非负整数。 如果所选行数大于数据集中的行数,则返回整个数据集。
运行试验。
模块输出只包含指定行数的单个数据集。 始终从数据集的顶部开始读行。
创建数据样本
此选项支持简单随机采样或分层随机采样。 如果要创建用于测试的小型代表性样本数据集,此选项很有用。
将" 分区和示例 "模块添加到工作室中的试验 (经典) ,并连接数据集。
分区或采样模式:将 此选项设置为采样。
采样率:键入介于 0 和 1 之间的值。 此值指定输出数据集应包含的行数占源数据集中行数的百分比。
例如,如果只需要占原始数据集一半的数据,则键入“
0.5
”,表示采样率应为 50%。根据指定的比率,随机排列输入数据集中的行,并将其有选择地放入输出数据集。
用于采样的随机种子:(可选)键入要用作种子值的整数。
如果希望每次都按相同的方式划分多个行,则此选项非常重要。 默认值为 0,表示根据系统时钟生成起始种子。 每次运行试验时,这可能会导致略有不同的结果。
采样的分层拆分:如果数据集中的行在采样之前应按某个键列均匀划分,请选择此选项。
对于用于采样的分层键列,请选择一个单独的分层列,以供划分数据集时使用。 然后,将数据集中的行划分如下:
所有输入行均按指定分层列中的值分组(分层)。
对每个组中的行进行随机排列。
将每个组有选择地添加到输出数据集中以满足指定比例。
有关分层采样详细信息,请参阅 技术说明 部分。
运行试验。
使用此选项时,模块输出包含代表性采样数据的单个数据集。
将数据拆分到多个分区
要将数据集划分为数据子集时,请使用此选项。 要创建自定义数量的折叠以用于交叉验证,或将行拆分为多个组,此选项也很有用。
将" 分区和示例 "模块添加到工作室中的试验 (经典) ,并连接数据集。
对于分“区或采样模式”,选择“分配到折叠” 。
在分区中使用替换:如果希望将采样行放回到行池中以允许重用,请选择此选项。 因此,可以将同一行分配到多个折叠。
如果不使用替换(默认选项),则不会将采样行放回到行池中以允许重用。 因此,只能将每行分配到一个折叠。
随机拆分:如果要将行随机分配到折叠,请选择此选项。
如果不选择此选项,则使用轮询机制方法将行分配到折叠。
随机种子:(可选)键入要用作种子值的整数。 如果希望每次都按相同的方式划分多个行,则此选项非常重要。 否则,默认值 0 表示将使用随机起始种子。
指定分区器方法:使用以下选项指示希望数据如何分配到每个分区:
平均分区:使用此选项可使每个分区中的行数相等。 若要指定输出分区的数目,请在“指定要平均拆分的折叠数”文本框中键入整数。
使用自定义比例进行分区:使用此选项可以用逗号分隔的列表指定每个分区的大小。
例如,如果要创建三个分区,第一个分区包含 50% 的数据,其余两个分区各自包含 25% 的数据,请单击“用逗号分隔的比例列表”文本框,然后键入这些数字:
.5, .25, .25
所有分区大小的总和必须正好是 1。
如果输入的数字加起来小于 1,则将创建一个额外的分区来容纳剩余的行。 例如,如果键入值 .2 和 .3,将创建第三个分区,用于容纳所有行的其余 50%。
如果输入的数字超过 1,则运行试验时将引发错误。
分层拆分:如果希望在拆分时对行进行分层,请选择此选项,然后选择“分层列”。
有关分层采样详细信息,请参阅 技术说明 部分。
运行试验。
使用此选项,模块将输出多个数据集,并使用指定的规则对数据集进行分区。
使用预定义分区中的数据
如果已将数据集划分为多个分区,而现在想要依次加载每个分区以进行进一步分析或处理,可以使用此选项。
将分区 和示例 模块添加到工作室中的试验 (经典) 。
将其连接到“分区和采样”以前的实例的输出。 此实例必须使用“分配到折叠”选项才能生成一定数量的分区。
分区模式或采样模式:选择“选取折叠”。
指定要从中进行抽样的折叠:通过键入要使用的分区的索引来选择要使用的分区。 分区索引从 1 开始。 例如,如果将数据集划分为三个部分,则分区的索引分别为 1、2 和 3。
如果键入无效的索引值,则会引发设计时错误: "错误0018: Dataset 包含无效数据。"
除了将数据集按折叠分组,还可以将数据集分成两个组:目标折叠和其他所有内容。 为此,请键入单个折叠的索引,然后选择选项“选取所选折叠的补集”,以获取除指定折叠中数据以外的所有内容。
如果使用多个分区,则必须添加“分区和采样”模块的其他实例才能处理每个分区。
例如,假设之前使用 age 将患者分区为五个折叠。 若要处理每个折叠,需要使用 分区和示例 模块的五个副本,并且在每个副本中选择不同的折叠。
提示
示例试验( 拆分分区和示例)演示了此方法。
运行试验。
使用此选项,则模块输出单个数据集,它只包含分配到该折叠的行。
注意
不能直接查看折叠指定情况;此信息仅存在于元数据中。
示例
有关如何使用此模块的示例,请参阅 Azure AI 库:
二元分类的交叉验证:应用20% 的采样率来创建更小的随机抽样数据集。 原始人口普查数据集有超过30000行;采样的数据集大约为6500。
交叉验证回归:数据随机、均匀地分配给5个折叠,无分层,结果用于交叉验证。
拆分分区和示例:演示使用分区和采样的多种方法。 首先,使用 " 分配给折叠 " 选项将数据集中的行分配给三个大小相等的组之一。 然后,使用 "选取折叠" 模式添加第三个分区和示例实例,以将操作应用到数据子集
- 在第一折 (1) 的索引中,行将随机拆分。
- 在第二折 (2) 的索引中,行将按教育拆分。
- 在第三个折叠 (索引为 3) ,按 age 拆分行。
技术说明
分层列必须是具有离散值的分类。 如果该列尚未分类并且出现错误,请使用 " 编辑元数据 " 更改列属性。
指定的阶层列不能包含连续数据:即每个单元格中具有浮点值的数值数据。 否则,模块无法处理数据并返回错误。
原因在于,用于分层的任何列都必须具有一组有限的可能值。 如果指定的阶层列包含任何浮点值,并且该列不属于分类类型,则它可能包含无限数目的值。
如果阶层列包含布尔值,并且你希望将它们解释为分类,则必须使用 编辑元数据 模块来更改元数据标签。
如果阶层列包含具有太多唯一值的字符串或数值数据,则列不适合用于分层采样。
有关分层采样的详细信息
分层采样 可确保数据的子集具有所选阶层列的代表性采样。 举例来说,当你想要确保你的练习数据包含测试数据所具有的相同年龄值分布(或反之)时,此方法会很有用。 或者,你可能想要对卫生保健研究中的性别列进行分层,以确保对数据进行分区时男性和女性平均分布。 分层可确保保留选定值的比率。
您可以通过选择单个列作为 阶层列来指定数据的分隔值。
此模块要求阶层列是分类列。 如果你想要为阶层使用一个整数值列,则最好将分类类型分配给该列。 在将数据添加到机器学习 Studio (经典) 之前,可以通过数据的架构执行此操作,也可以使用编辑元数据更新列的元数据。
具有连续数据(即每个单元格中带浮点值的数字数据)的列不能用作阶层列。 如果遇到错误,可以使用 组中的数据 将值分散到不同的范围,然后使用 " 编辑元数据 " 来保证将列视为分类。
预期输入
名称 | 类型 | 说明 |
---|---|---|
数据集 | 数据表 | 要拆分的数据集 |
模块参数
名称 | 范围 | 类型 | 默认 | 说明 |
---|---|---|---|---|
分区或采样模式 | 列表 | 采样方法 | 采样 | 选择分区或采样模式 |
在分区中使用替换 | 任意 | 布尔 | False | 指示折叠是否应为非连续 (默认值-无替换) 或重叠 (true-使用替换) |
随机化拆分 | 任意 | 布尔 | True | 指示是否随机拆分 |
随机种子 | 任意 | Integer | 0 | 为随机数生成器指定种子 |
指定分区器方法 | 列表 | 分区方法 | 均衡分区 | 依次选择 " 分区 ",以分区为大小相等的折叠,或分区为自 定义的比例 分区,使其分区为自定义大小的折叠 |
指定要均衡拆分成的折叠数 | >=1 | Integer | 5 | 选择要拆分到的分区数 |
分层拆分 | 列表 | True/False 类型 | False | 指示是否对拆分进行分层 |
分层键列 | 任意 | ColumnSelection | 包含分层键 | |
逗号分隔的比例列表 | 任意 | 字符串 | 列出比例,用逗号分隔 | |
为自定义折叠分配进行分层拆分 | 任意 | True/False 类型 | False | 指示是否为自定义折叠分配对拆分进行分层 |
自定义折叠分配的分层键列 | 任意 | ColumnSelection | 为自定义折叠分配包含分层键 | |
指定要从中采样的折叠 | >=1 | Integer | 1 | 包含要采样的折叠的索引 |
选取所选折叠的补数 | 任意 | 布尔 | False | 选择指定折叠的补数 |
采样速率 | 任意 | Float | 0.01 | 选择采样率 |
采样的随机种子 | 任意 | Integer | 0 | 为采样的随机数生成器指定种子 |
采样的分层拆分 | 任意 | True/False | False | 指示是否为采样对拆分进行分层 |
采样的分层键列 | 任意 | ColumnSelection | 包含采样的分层键 | |
要选择的行数 | >=0 | Integer | 10 | 选择允许传递给下一个模块的最大记录数 |
Outputs
名称 | 类型 | 说明 |
---|---|---|
oDataset | 数据表 | 拆分后生成的数据集 |