组分类值
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
将多个类别的数据分入新类别
类别: 数据转换/操作
模块概述
本文介绍如何使用机器学习 Studio (经典) 中的 "组分类值" 模块来创建就地查找表。
分组分类值的典型用途是将多个字符串值合并到一个新级别。 例如,你可以将区域中的单个邮政编码分配给单个地区代码,或将多个产品分组为一个类别。
若要使用此模块,请键入要使用的查找值,并将现有值映射到替换值。 您只能为分类列创建分组,而不能为指定为标签或功能的数值类型或列的列创建分组。
未显式映射到新级别的任何列值都将分配给默认级别。 例如,如果未映射所有单个邮政编码,则会将其分组为非映射值的级别,这可能会导致名称 未知。
注意
最多可以创建20个新级别,包括默认级别。 如果需要更多值,或者需要动态定义映射,则建议你在 " 执行 R 脚本 " 模块中使用自定义 R 脚本。 或者,在 "应用 SQL 转换" 模块中使用 SQL 语句。
如何使用组分类值
建议预先准备现有值和新类别的列表。 对于每个类别,你应该准备新的类别名称,以及要包括在类别中的值的逗号分隔列表。
将 " 组分类值 " 模块添加到试验中。 您可以在 数据转换、 操作中找到该模块。
连接包含要转换的值的数据集。
在 "组分类值" 的 "属性" 窗格中,使用 "列选择器" 选择具有要减少的级别的列。
建议您单击 " 开始 " 且没有要启动的 列 ,然后按名称添加列。 否则,可能会将太多列添加为候选项,从而导致错误。
该列必须是分类列。 如果不是,则将 编辑元数据 添加到上游,并更改列类型。
请确保从输入中删除不应应用字符串替换的任何列。
对于 " 输出模式",指示是只输出新级别,还是追加更改以查看原始列,同时替换并行。
默认情况下, ResultOnly仅显示新值。 就地选项将现有列值替换为新级别。
对于 " 默认级别名称",请键入一个字符串值,用于替换未显式映射的所有值。 您可以使用诸如 "未知" 或 "默认" 之类的内容。
注意
此默认级别值将应用于无法映射的所有值。 如果意外包含了不打算映射的列,则值将应用于列中的所有值。 因此,在处理前检查列选择是否准确。
对于 新的级别数,请键入一个数字,该数字指示 (级别) 的新类别的总数,包括未映射值的默认级别。
对于 " 新级别 1" 的名称,为第一个类别提供新组名称。
在紧跟的文本框中,以 逗号分隔的要映射到新级别1的旧级别列表,键入或粘贴要映射到新级别的所有值的详尽列表。 不允许使用通配符和正则表达式。
继续键入应映射到新级别的新级别名称和类型或粘贴值。
建议您在工作时将值列表保存在单独的文件中。 如果更改级别数,则会删除以前键入的任何字符串,并且必须重新开始。
但是,如果您正在编辑之前保存的模块,则可以恢复为原始设置。
运行试验。
结果
若要查看结果,请右键单击 " 组分类值 " 模块,选择 " 结果数据集",然后单击 " 可视化"。
示例
有关机器学习的操作示例,请参阅 Azure AI 库。
你还可以通过使用包含一些可以轻松分组的字符串变量的小型数据集(例如机器学习 Studio (经典) 提供的汽车价格数据集),亲自尝试此模块。
假设你想要按引擎大小将汽车价格数据集中的汽车分组,使用柱面数。 你将创建新级别 "大"、"小"、"小" 和 "其他",如下所示:
- 大引擎:六个柱面或更大
- 小型引擎:两个或四个柱面
- 其他:其他任何内容
- 添加 " 选择数据集中的列 " 模块,并只
num-of-cylinders
选择列。 - 添加 "编辑元数据" 模块,并将列更改为 "分类"
num-of-cylinders
。 - 添加 " 组分类值 " 模块并连接已修改的数据集。
- 对于 " 默认级别名称",请键入
other
。 不需要提供此级别的值。 - 对于 " 新级别 1" 的名称,请键入
big
。 在要映射到级别1的旧级别列表中,粘贴six, eight, twelve
。 - 对于 新级别2的名称,请键入
small
。 对于映射的值,请粘贴two, four
。 - 运行试验。
- 可视化结果时,你会认识到,原始数据集具有一些你未考虑的奇数引擎大小,例如
five
和three
。 所有此类项都映射到other
级别。
技术说明
本部分包含实现详情、使用技巧和常见问题解答。
你可能会遇到错误消息 "名称为" < columnname > "的列不属于允许的类别。"
此消息表明你选择的列不是分类列。 您可以使用 "编辑元数据" 将列标记为
Categorical
,也可以选择包含相应类别值的其他列。
预期输入
名称 | 类型 | 说明 |
---|---|---|
数据集 | 数据表 | 要分组的数据 |
模块参数
名称 | 范围 | 类型 | 默认 | 说明 |
---|---|---|---|---|
选定的列 | any | ColumnSelection | CategoricalAll | 选择要分组的列。 |
输出模式 | any | OutputTo | ResultOnly | 指定应如何输出类别标签。 |
默认级别名称 | any | String | 指示没有映射匹配项时要使用的默认级别。 | |
新级别数 | 列表 | 组数 | 指定将值分组后的级别数,包括默认级别。 |
输出
名称 | 类型 | 说明 |
---|---|---|
结果数据集 | 数据表 | 分组的数据 |