替换离散值
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
基于另一个列将某一列中的离散值替换为数字值
Category: 统计函数
模块概述
本文介绍如何使用机器学习 Studio 中的 "替换离散值" 模块 (经典) ,以生成可用于表示离散值的概率评分。 此分数有助于了解离散值的信息值。
工作原理:
选择包含离散 (或分类) 值的列,然后选择另一个要用于引用的列。
根据第二列是分类还是非分类,该模块将计算以下值之一:
- 第二列中给定第一列中的值的 条件概率 。
- 第一列中每组值的 平均值 和 标准偏差 。
该模块输出数据集和分数,以及可以保存并应用到其他数据集的函数。
如何配置替换离散值
提示
建议一次只使用一对列。 如果选择多个要分析的列,则该模块不会引发错误。 但是,在实践中,如果选择多个列,则这些列将按内部试探法(而不是按选择顺序)进行匹配。
因此,建议您每次选择一对列,一个列用于 离散列 ,一个列用于 替换列。
如果需要为多个列生成评分,请使用单独的实例 替换离散值。
将 " 替换离散值 " 模块添加到试验中。 可以在机器学习 Studio (经典) 的实验项列表中的 "统计函数" 组中找到此模块。
连接包含至少一列分类数据的数据集。
离散列:单击 " 启动列选择器 " 以选择包含离散 (或分类) 值的列。
您选择的任何离散列都必须是分类。 如果收到错误,请使用 " 编辑元数据 " 模块更改列类型。
替换列:单击 " 启动列选择器 " 以选择包含用于计算更换分数的值的列。
如果为 离散列选择多个列,则必须选择相同数量的替换列。
运行试验。
注意
不能选择要应用的统计函数。 该模块根据为 替换列选择的列的数据类型计算相应的度量值。
结果
该模块为每对列计算以下值之一:
如果第二列包含分类值,则在给定第一列中的值的情况下,该模块将计算第二列的 条件概率 。
例如,假设您从人口普查数据集选择
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 错误代码。