“清理缺失数据”组件

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

使用此组件删除、替换或推断缺失值。

数据科学家经常需要检查数据中的缺失值,然后执行各种操作来修复数据,或插入新值。 此类清理操作旨在防止训练模型时缺失的数据造成问题。

此组件支持多种类型的用于“清理”缺失值的操作,其中包括:

  • 将缺失值替换为占位符、平均值或其他值
  • 完全删除存在缺失值的行和列
  • 基于统计方法推断值

使用此组件不会更改源数据集。 而是在工作区中创建可在后续工作流中使用的新数据集。 还可以保存新的已清理数据集以供重复使用。

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

如何使用“清理缺失数据”

可以通过此组件定义清理操作。 还可以保存清理操作,以便日后将其应用于新数据。 请参阅以下部分了解如何创建和保存清理过程:

重要

用于处理缺失值的清理方法可能会对结果产生严重的影响。 建议体验不同的方法。 同时考虑到使用特定方法的理由,以及结果的质量。

替换缺失值

每次将清理缺失数据组件应用到一组数据时,都会对所选的所有列应用相同的清理操作。 因此,如果需要使用不同的方法清理不同的列,请使用组件的单独实例。

  1. 向管道添加清理缺失数据组件,并连接包含缺失值的数据集。

  2. 对于“要清理的列”,请选择包含要更改的缺失值的列。 可以选择多个列,但必须在所有选定列中使用相同的替换方法。 因此,通常需要单独清理字符串列和数字列。

    例如,若要检查所有数字列中的缺失值:

    1. 选择“清理缺失数据”组件,然后单击组件右侧面板中的“编辑列”。

    2. 对于“包含”,请从下拉列表中选择“列类型”,然后选择“数值”。

    所选的任何清理或替换方法必须适用于所选的所有列。 如果任一列中的数据与指定的操作不兼容,组件会返回错误并停止管道。

  3. 对于“最小缺失值比率”,请指定执行操作所需的最小缺失值数目。

    将此选项与“最大缺失值比率”结合使用可以定义针对数据集执行清理操作所要依据的条件。 如果太多或太少的少存在缺失值,则无法执行该操作。

    输入的数字表示列中缺失值与所有值的。 “最小缺失值比率”属性默认设置为 0。 这意味着,即使只有一个缺失值,也会清理缺失值。

    警告

    每个列都必须满足此条件,才能应用指定的操作。 例如,假设选择了三个列,然后将最小缺失值比率设置为 0.2 (20%),但实际上只有一个列存在 20% 的缺少值。 在这种情况下,清理操作只会应用到缺失值超过 20% 的列。 因此,其他列将保持不变。

    如果对缺失值是否已更改有任何疑问,请选择选项“生成缺失值指示器列”。 这会将某个列追加到数据集,以指示每个列是否满足最小和最大范围的指定条件。

  4. 对于“最大缺失值比率”,请指定要能够执行操作,最多可以存在多少个缺失值。

    例如,你可能希望仅当 30% 或更少的行包含缺失值时才执行缺失值替换,并在 30% 以上的行包含缺失值时将值保持原样。

    可将数字定义为列中缺失值与所有值的比。 “最大缺失值比率”默认设置为 1。 这意味着,即使列中缺少 100% 的值,也会清理缺失值。

  5. 对于“清理模式”,请选择以下用于替换或删除缺失值的选项之一:

    • 自定义替换值:使用此选项可以指定应用到所有缺失值的占位符值(例如 0 或 NA)。 指定为替换值的值必须与列的数据类型兼容。

    • 替换为平均值:计算列的平均值,并使用该平均值作为列中每个缺失值的替换值。

      仅适用于“整数”、“双精度”或“布尔值”数据类型的列。

    • 替换为中间值:计算列的中间值,并使用该中间值作为列中任何缺失值的替换值。

      仅适用于“整数”或“双精度”数据类型的列。

    • 替换为模式:计算列的模式,并使用该模式作为列中每个缺失值的替换值。

      适用于“整数”、“双精度”、“布尔值”或“分类”数据类型的列。

    • 删除整行:完全删除数据集中包含一个或多个缺失值的任何行。 如果可将缺失值视为随机缺失,此选项非常有用。

    • 删除整列:完全删除数据集中包含一个或多个缺失值的任何列。

  6. 如果选择了选项“自定义替换值”,则选项“替换值”可用。 键入一个新值,用作列中所有缺失值的替换值。

    请注意,只能在 Integer、Double、Boolean 或 String 数据类型的列中使用此选项。

  7. 生成缺失值指示器列:若要输出某些信息来指示列中的值是否满足缺失值清理条件,请选择此选项。 设置新的清理操作并想要确保它按设计方式工作时,此选项特别有用。

  8. 提交管道。

结果

组件返回两个输出:

  • 已清理的数据集:由所选列(已根据指定处理其中的缺失值)以及指示器列(如果选择了该选项)构成的数据集。

    也会“传递”未选择进行清理的列。

  • 清理转换:用于清理的数据转换,可以保存在工作区中,并在以后应用于新数据。

将保存的清理操作应用于新数据

如果需要经常重复执行清理操作,我们建议将用于数据清理的脚本保存为转换,以便重复用于同一数据集。 如果必须频繁地重新导入再清理采用相同架构的数据,则保存清理转换特别有用。

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

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

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

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

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

    但是,假设你基于数字列的子集创建了转换。 可将此转换应用到混合列类型的数据集而不会引发错误,因为只有匹配的数字列中的缺失值才会发生更改。

  5. 提交管道。

后续步骤

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