转换为指示器值

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

使用 Azure 机器学习设计器中的“转换为指示器值”组件可将包含分类值的列转换为一系列二元指示器列。

通过“转换为指示器值”操作,可将分类数据转换为由二进制或多个值表示的指示器值。 此过程是通常用于分类模型的数据预处理步骤之一。

此组件还会输出用来转换为指示器值的转换的定义。 可以通过应用转换组件在具有相同架构的其他数据集上重复使用此转换。

如何配置“转换为指示器值”

  1. 找到“转换为指示器值”并将其拖到管道草图中。 可以在“数据转换”类别下找到此组件。

    注意

    可以在使用“转换为指示器值”组件之前使用编辑元数据组件,以将目标列标记为分类列。

  2. 将“转换为指示器值”组件连接到包含要转换的列的数据集。

  3. 选择“编辑列”以选择一个或多个分类列。

  4. 如果你只想输出新的布尔值列,请选择“覆盖分类列”选项。 此选项默认已关闭。

    提示

    选择覆盖选项不会真正删除或修改源列。 而是生成新列并在输出数据集中提供新列,而源列仍会在工作区中提供。 如果需要查看原始数据,可以随时使用添加列组件将源列添加回来。

  5. 提交管道。

结果

假设某个列的评分指示服务器出现故障的概率是高、中还是低。

服务器 ID 故障评分
10301
10302 中型
10303

应用“转换为指示器值”时,设计器会将单个标签列转换为包含布尔值的多个列:

服务器 ID 故障评分 - 低 故障评分 - 中 故障评分 - 高
10301 1 0 0
10302 0 1 0
10303 0 0 1

下面是转换的工作原理:

  • 在描述风险的“故障评分”列中,只有三个可能的值(“高”、“中”和“低”),不存在缺失值。 因此,正好创建了三个新列。

  • 新指示器列使用以下模式根据源列的列标题和值命名:<源列>- <数据值>。

  • 应该只有一个指示器列包含评分 1,所有其他指示器列中的评分为 0,因为每台服务器只能有一种风险评级。

现在,可以在机器学习模型中使用这三个指示器列作为特征。

组件返回两个输出:

  • 结果数据集:包含转换的指示器值列的数据集。 也会“传递”未选择进行清理的列。
  • 指示器值转换:用于转换为指示器值的数据转换,这些值可以保存在工作区中,并在以后应用于新数据。

将保存的指示器值操作应用于新数据

如果需要经常重复指示器值操作,可将数据操作步骤保存为转换,以便对同一数据集重复使用它。 如果必须经常重新导入并清理采用相同架构的数据,则这种做法非常有效。

  1. 应用转换组件添加到管道。

  2. 添加要清理的数据集,并将该数据集连接到右侧输入端口。

  3. 在设计器的左侧窗格中展开“数据转换”组。 找到已保存的转换,并将其拖放到管道中。

  4. 将已保存的转换连接到应用转换的左侧输入端口。

    应用保存的转换时,无法选择要转换的列。 这是因为该转换已定义,会自动应用到原始操作中指定的数据类型。

  5. 提交管道。

技术说明

本部分包含实现详情、使用技巧和常见问题解答。

使用提示

  • 只能将标记为分类的列转换为指示器列。 如果看到以下错误,原因可能是选择的某个列不是分类列:

    错误 0056:名称为 <列名> 的列不在允许的类别中。

    默认情况下,大多数字符串列将作为字符串特征进行处理,因此必须使用编辑元数据将其显式标记为分类。

  • 可以转换为指示器列的列数没有限制。 但是,由于每个值列可以产生多个指示器列,因此你可能希望每次只转换和检查几个列。

  • 如果该列包含缺失值,则会为缺失的类别单独创建一个名称为“<源列>- 缺失”的指示器列

  • 如果要转换为指示器值的列包含数字,则必须将其标记为分类,如同转换任何其他特征列一样。 完成此操作后,数字将被视为离散值。 例如,如果某个数字列的 MPG 值范围为 25 到 30,则会为每个离散值创建一个新的指示器列:

    制造商 Highway mpg -25 Highway mpg -26 Highway mpg -27 Highway mpg -28 Highway mpg -29 Highway mpg -30
    Contoso Cars 0 0 0 0 0 1
  • 避免在数据集中添加过多的维度。 建议先检查列中的值数,然后相应地将数据装箱或量化。

后续步骤

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