替换离散值

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

基于另一个列将某一列中的离散值替换为数字值

Category: 统计函数

注意

适用于:仅限机器学习 Studio (经典)

可在 Azure 机器学习设计器中获取类似的拖放模块。

模块概述

本文介绍如何使用机器学习 Studio 中的 "替换离散值" 模块 (经典) ,以生成可用于表示离散值的概率评分。 此分数有助于了解离散值的信息值。

工作原理:

选择包含离散 (或分类) 值的列,然后选择另一个要用于引用的列。

根据第二列是分类还是非分类,该模块将计算以下值之一:

  • 第二列中给定第一列中的值的 条件概率
  • 第一列中每组值的 平均值标准偏差

该模块输出数据集和分数,以及可以保存并应用到其他数据集的函数。

如何配置替换离散值

提示

建议一次只使用一对列。 如果选择多个要分析的列,则该模块不会引发错误。 但是,在实践中,如果选择多个列,则这些列将按内部试探法(而不是按选择顺序)进行匹配。

因此,建议您每次选择一对列,一个列用于 离散列 ,一个列用于 替换列

如果需要为多个列生成评分,请使用单独的实例 替换离散值

  1. 将 " 替换离散值 " 模块添加到试验中。 可以在机器学习 Studio (经典) 的实验项列表中的 "统计函数" 组中找到此模块。

  2. 连接包含至少一列分类数据的数据集。

  3. 离散列:单击 " 启动列选择器 " 以选择包含离散 (或分类) 值的列。

    您选择的任何离散列都必须是分类。 如果收到错误,请使用 " 编辑元数据 " 模块更改列类型。

  4. 替换列:单击 " 启动列选择器 " 以选择包含用于计算更换分数的值的列。

    如果为 离散列选择多个列,则必须选择相同数量的替换列。

  5. 运行试验。

    注意

    不能选择要应用的统计函数。 该模块根据为 替换列选择的列的数据类型计算相应的度量值。

结果

该模块为每对列计算以下值之一:

  • 如果第二列包含分类值,则在给定第一列中的值的情况下,该模块将计算第二列的 条件概率

    例如,假设您从人口普查数据集选择 occupation 为离散列,然后选择 gender 作为替换列。 模块的输出为:

    P(gender | occupation)

  • 如果第二列包含可转换为数字的非分类值 (例如, 标记为分类) 的数值或布尔值,则该模块将输出第一列中每组值的 平均值标准偏差

    例如,假设您使用 occupation 作为 离散列 ,而另一列是数值列 hours-per-week 。 该模块将输出以下新值:

    Mean(hours-per-week | occupation)

    Std-Dev(hours-per-week | occupation)

除了概率分数,该模块还会输出转换后的数据集。 在此数据集中,被选为 替换列 的列将替换为包含计算所得分数的列。

提示

此操作不会实际更改或删除源数据集中的列;评分列是模块生成的新列,而不是源数据。

若要查看与概率分数同时的源值,请使用 " 添加列 " 模块。

示例

可以通过一些简单的示例来说明 " 替换离散值 " 的用法。

示例 1-将分类值替换为概率分数

下表包含分类列 X,以及具有被视为分类值的 True/False 值的列 Y。 当你使用 " 替换离散值" 时,它将计算 Y 给定 X 的概率的条件概率分数,如第三列中所示。

X Y P(Y|X)
蓝色 0 P(Y=0|X=Blue) = 0.5
蓝色 1 P(Y=1|X=Blue) = 0.5
绿色 0 P(Y=0|X=Green) = 2/3
绿色 0 P(Y=0|X=Green) = 2/3
绿色 1 P(Y=1|X=Green) = 1/3
Red 0 P(Y=0|X=Red) = .75
Red 0 P(Y=0|X=Red) = .75
Red 1 P(Y=1|X=Red) = .25
Red 0 P(Y=0|X=Red) = .75

示例 2-基于非分类列计算平均值和标准偏差

如果第二列是数字,则 替换离散值 将计算平均值和标准偏差,而不是条件概率分数。

下面的示例基于 汽车价格 示例数据集,简化如下:

  • 选择了一小部分列。

  • 通过使用分区和示例模块的Head选项,只提取前30行。

  • "替换离散值" 模块用于计算车辆路缘的平均偏差和标准偏差。 给定分类列 num-of-doors

下表说明了这些结果:

正文 Num-of-doors Curb-weight Mean(curb-weight|num-of-doors) Std-Dev(curb-weight|num-of-doors)
std two 2548 2429.785714 507.45699
std four 2337 2625.6 493.409877
std two 2507 2429.785714 507.45699
turbo four 3086 2625.6 5 493.409877
std four 1989 2625.6 493.409877
turbo 2191
std four 2535 2625.6 493.409877

您可以通过使用 Excel 中的 AVERAGEIF 函数来验证每组值的平均值。

示例 3-处理缺失值

此示例演示在计算条件概率分数时,如何将缺失值 (null) 传播到结果。

  • 如果离散值列和计算查找列中包含任何缺失值,则缺少的值会传播到新列中。

  • 如果离散值列只包含缺失值,则此模块将无法处理该列,并将显示错误消息。

X Y P(Y|X)
1 True P(Y=true|X=1) = 1/2
1 False P(Y=false|X=1) = 1/2
2 True P(Y=true|X=2) = 1/3
2 False P(Y=false|X=2) = 1/3
2 Null P(Y=null|X=2) = null

技术说明

  • 必须确保要替换的任何离散列都已分类,否则该模块将返回一个错误。 为此,请使用 编辑元数据 模块。

  • 如果第二列包含布尔值,True-False 值将作为数值处理(其中 FALSE 和 TRUE 将分别相当于 0 和 1)。

  • 标准偏差列的公式计算总体标准偏差。 因此,在分母中使用 N,而不是 (N-1) 。

  • 如果第二列包含非分类数据 (数值或布尔值) ,则该模块将计算 X 的给定值的平均值和标准偏差。

    也就是说,对于数据集中的每一行,按以下方式 i 索引:

    Mean(Y│X)i = Mean(Y│X = Xi)

    StdDev(Y│X)i = StdDev(Y│X = Xi)

  • 如果第二列包含既不是数值也不是布尔值的分类数据,则该模块将计算 X 的给定值的 Y 的条件概率。

  • 第二列中的任何布尔值分别作为带 FALSE 和 TRUE 等效于 0 和 1 的数字数据进行处理。

  • 如果离散列中有一个类,使得第二列中存在具有缺失值的行,则该类中的条件概率总和将小于一。

预期输入

名称 类型 说明
数据集 数据表 输入数据集

模块参数

名称 范围 类型 默认 说明
离散列 任意 ColumnSelection 选择包含离散值的列
替换列 任意 ColumnSelection 选择包含用来替代离散值的数据的列

Outputs

名称 类型 说明
补充数据集 数据表 包含替换数据的数据集
转换函数 ITransform 接口 可以应用到其他数据集的转换函数的定义

例外

异常 描述
错误 0001 如果找不到数据集的一个或多个指定列,则会发生异常。
错误 0003 如果一个或多个输入为 NULL 或为空,将出现异常。
错误 0020 如果某些数据集中传递给模块的列数太小,则会发生异常。
错误 0021 如果某些数据集中传递给模块的行数太小,则会发生异常。
错误 0017 如果一个或多个指定列具有当前模块不支持的类型,则会发生异常。
错误 0026 如果不允许同名的列,则会发生异常。
错误 0022 如果输入数据集中的选定列数不等于预期数量,则会发生异常。

有关特定于 Studio (经典) 模块的错误列表,请参阅机器学习错误代码

有关 API 异常的列表,请参阅机器学习 REST API 错误代码

另请参阅

统计函数