拆分数据组件

本文介绍 Azure 机器学习设计器中的一个组件。

使用拆分数据组件,可以将数据集分成两个不同的集。

当需要将数据分为训练集和测试集时,此组件非常有用。 你还可以自定义数据的分割方式。 某些选项支持数据随机化。 其他选项是针对特定数据类型或模型类型定制的。

配置组件

提示

在选择拆分模式之前,请阅读所有选项以确定所需的拆分类型。 如果更改拆分模式,可能会重置所有其他选项。

  1. 在设计器中将“拆分数据”组件添加到管道。 你可在“示例和拆分”类别中的“数据转换”下找到此组件。

  2. 拆分模式:根据现有的数据类型以及所需的数据分割方式,选择以下模式之一。 每个拆分模式都有不同的选项。

    • 拆分行:如果只需将数据拆分为两个部分,请使用该选项。 可以指定每个拆分批中的数据百分比。 默认情况下,数据将对半分割。

      还可随机化每组中的行选定内容,并使用分层采样。 在分层采样中,必须选择希望在两个结果数据集中平等分配值的单个数据列。

    • 正则表达式拆分:如果你希望通过测试单个值列来分割数据集,请选择此选项。

      例如,如果你正在分析情绪,可以在文本字段中检查是否存在特定的产品名称。 然后,可将数据集分割成包含目标产品名称的行,以及不包含目标产品名称的行。

    • 相对表达式拆分:如果希望对数字列应用条件,请使用该选项。 该数字可以是日期/时间字段、包含年龄或金额的列,甚至可以是百分比。 例如,你可能希望根据项的成本分割数据集,按年龄范围将人员分组,或者按日历日期划分数据。

拆分行

  1. 拆分数据组件添加到设计器中的管道,并连接要拆分的数据集。

  2. 对于“拆分模式”,请选择“拆分行”。

  3. 第一个输出数据集中的行部分:使用此选项确定有多少行进入第一个(左侧)输出。 所有其他行将进入第二个(右侧)输出。

    此比率表示发送到第一个输出数据集的行的百分比,因此必须输入一个介于 0 和 1 之间的小数。

    例如,如果输入 0.75 作为值,则会按 75/25 的比率拆分数据集。 在此拆分中,75% 的行将发送到第一个输出数据集。 剩余 25% 的行将发送到第二个输出数据集。

  4. 如果要将数据选定内容随机化为两个组,请选择“随机化拆分”选项。 这是创建训练和测试数据集时的首选项。

  5. 随机种子:如果“随机拆分”设置为 false,将忽略此参数 。 否则,请输入非负整数值以启动要使用的实例的伪随机序列。 此默认种子用于生成随机数的所有组件。

    指定种子会使结果可再现。 如果你需要重复执行拆分操作的结果,应为随机数字生成器指定相同的种子数。

  6. 分层拆分:如果将此选项设置为 True,则可确保两个输出数据集包含“阶层列”或“分层键列”中值的代表性示例 。

    使用分层采样,将对数据进行划分,以便每个输出数据集大约获取每个目标值的相同百分比。 例如,你可能希望确保训练集和测试集在结果方面大致平衡,或者考虑其他一些列(如性别)。

  7. 提交管道。

选择正则表达式

  1. 拆分数据组件添加到管道,并将其作为输入连接到要拆分的数据集。

  2. 对于“拆分模式”,请选择“正则表达式拆分” 。

  3. 在“正则表达式”框中,输入有效的正则表达式。

    正则表达式应遵循正则表达式的 Python 语法。

  4. 提交管道。

    根据提供的正则表达式,数据集将分割成两组行:包含与表达式匹配的值的行,以及所有剩余行。

以下示例演示如何使用“正则表达式”选项来分割数据集。

单个完整单词

此示例会将在列 Text 中包含文本 Gryphon 的所有行放入第一个数据集。 它将其他行放入“拆分数据”的第二个输出。

    \"Text" Gryphon  

Substring

此示例在数据集的第二列中的任意位置查找指定的字符串。 此处的位置由索引值 1 表示。 匹配区分大小写。

(\1) ^[a-f]

第一个结果数据集包含索引列以以下字符之一开头的所有行:abcdef。 所有其他行将定向到第二个输出。

选择相对表达式

  1. 拆分数据组件添加到管道,并将其作为输入连接到要拆分的数据集。

  2. 对于“拆分模式”,请选择“相对表达式” 。

  3. 在“关系表达式”框中,输入对单个列执行比较运算的表达式。

    对于“数字列”:

    • 该列包含任何数字数据类型的数字,包括日期和时间数据类型。
    • 表达式最多可以引用一个列名称。
    • 对于 AND 操作,请使用 & 字符。 对于 OR 操作,请使用 | 竖线字符。
    • 支持以下运算符:<><=>===!=
    • 不能使用 () 对运算进行分组。

    对于“字符串列”:

    • 支持以下运算符:==!=
  4. 提交管道。

    表达式将数据集分成两组行:值满足条件的行和所有剩余行。

下面的示例演示如何使用拆分数据组件中的相对表达式选项来划分数据集。

日历年

一个常见的场景是按年分割数据集。 以下表达式选择 Year 列中的值大于 2010 的所有行。

\"Year" > 2010

日期表达式必须考虑到数据列中包含的所有日期部分。 数据列中的日期格式必须一致。

例如,在使用格式 mmddyyyy 的日期列中,表达式应类似于:

\"Date" > 1/1/2010

列索引

以下表达式演示如何使用列索引,在数据集的第一列中选择包含小于或等于 30 但不等于 20 的值的所有行。

(\0)<=30 & !=20

后续步骤

请参阅 Azure 机器学习可用的组件集