在数据集中选择列
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
选择运算中要包含或排除的数据集的列
类别: 数据转换/操作
模块概述
本文介绍如何使用机器学习 Studio 中的 "选择数据集中的列" 模块 (经典) ,以选择要在下游操作中使用的列的子集。 该模块并非从物理角度删除源数据集中的列,而是创建列的子集,这与数据库视图和投影极其相似 。
如果需要限制可用于下游操作的列,或者如果想要通过删除不需要的列来减小数据集的大小,则此模块特别有用。
数据集中的列的输出顺序和原始数据中的相同,即使你以不同的顺序指定它们,也是如此。
如何使用数据集中的选择列
此模块没有参数。 可使用列选择器选择要包含或排除的列。
按名称选择列
此模块介绍了按名称选择列的多个选项:
筛选和搜索
单击“按名称”选项 。
如果连接的数据集已填充,则应显示可用列的列表。 如果未显示列,则可能需要运行上游模块以查看列的列表。
请在搜索框中键入内容以筛选列表。 例如,如果在搜索框中键入字母
w
,则会对列表进行筛选,以显示包含字母w
的列名称。选择这些列,然后单击右箭头按钮,将选中的列移到右窗格中的列表中。
- 若要选择列名称的连续范围,请按住 Shift 并单击 。
- 若要将单独的列添加到所选内容,请按住 Ctrl 并单击 。
单击复选标记按钮,保存并关闭。
结合其他规则使用名称
单击“按规则”选项 。
选择一种规则,如显示特定数据类型的列。
然后,单击该类型的单个列的名称,将其添加到所选内容列表。
键入或粘贴用逗号分隔的列名称列表
如果数据集非常宽,使用索引或生成的名称列表可能更简单,而不是单独选择列。 假设你提前准备好了列表:
- 单击“按规则”选项 。
- 选择“没有列”,再选择“包括”,然后在文本框中单击红色感叹号。
- 粘贴或键入之前确认的以逗号分隔的列名称列表。 如果有任何列存在无效名称,则无法保存模块,因此请事先检查名称。
你也可以使用此方法来指定使用其索引值的列的列表。 请参阅 " 示例 " 部分,了解有关如何使用列索引的提示。
按类型选择
如果使用“按规则”选项,则可以对列所选内容应用多个条件 。 例如,你可能只需要获取数值数据类型的功能列。
" 开始 " 选项确定你的起点,并且对于了解结果非常重要。
如果选择“所有列”选项,则所有列都将添加到列表中 。 然后,必须使用“排除”选项删除满足特定条件的列 。
例如,可以从所有列开始,然后按名称或按类型删除列。
如果选择“没有列”选择,则列的列表为空 。 然后指定条件以向列表添加列 。
如果应用多个规则,则每个条件都是累加的 。 例如,假设从没有列开始,然后添加一个规则来获取所有数字列。 在汽车价格数据集中生成 16 列。 然后,单击 + 符号以添加新条件,再选择“包含所有功能”。 生成的数据集包括所有数字列以及所有功能列,并包含一些字符串功能列。
按列索引选择
列索引是指原始数据集中的列顺序。
- 列从 1 开始按顺序编号。
- 若要获取列的范围,请使用连字符。
- 不允许使用开放式的规范,如
1-
或-3
。 - 不允许使用重复的索引值(或列名称),否则可能导致错误。
例如,假设你的数据集至少有八列,则可以粘贴以下任意示例以返回多个非相邻的列:
8,1-4,6
1,3-8
1,3-6,4
最后的示例不会导致错误;但是它将返回列的单个实例 4
。
有关使用列索引的其他提示,请参阅 " 示例 " 部分。
更改列的顺序
选项“允许重复项并在所选内容中保留列顺序”从空列表开始,然后添加按名称或索引指定的列 。 与其他选项不同,它们始终按“自然顺序”返回列,而此选项按你指定或列出的列顺序输出列。
例如,在包含列 Col1、Col2、Col3 和 Col4 的数据集中,可以通过指定以下列表之一来反转列的顺序并排除列 2:
Col4, Col3, Col1
4,3,1
示例
有关如何 在数据集中选择列的示例,请参阅 模型库中的以下示例试验:
在 " 航班延误预测 " 示例中, 选择 "数据集中的列 ",用于排除所有字符串列并按名称排除列。
在 " 学生绩效预测 " 示例中, 选择 "数据集" 中 的 "列",以获取所有时态功能并排除多个列。
在 " 比较回归量 " 示例中, 选择 "数据集" 中 的 "列",以排除列 " 门上",因为它是下面的数学运算的错误数据类型。
列选择的常见方案
下面的示例介绍了在机器学习中,用户应用 在数据集中选择列 的一些典型方法,并提供了有关如何选择列的一些提示:
我要从数据集中删除文本列,以便可以将数学运算应用于所有数字列。
许多操作只要求数据集中存在数值列。 您可以通过排除文本并排除分类列( (表示离散类别) 的数字)来暂时删除导致错误的列。
单击 " 启动列选择器"。
对于 " 始于",请选择 " 所有列"。
选择 " 排除 " 选项,选择 " 列类型",然后选择 " 字符串"。
单击加号 (+) 以添加新的条件。
选择 " 排除 " 选项,选择 " 列类型",然后选择 " 分类"。
我只需将功能选择应用于分类特征列。
如果需要分隔相似类型的列,可以应用多个条件。 例如,功能可以是分类或数字,但某些功能选择模块不允许使用非数值字段,因此您首先必须获取功能,然后添加条件以仅获取数值特性。
单击 " 启动列选择器"。
对于 " 始于",请选择 " 无列"。
选择 " 包括 " 选项,然后选择 " 所有功能"。
单击加号 (+) 以添加新的条件。
选择 " 包括 " 选项,选择 " 列类型",然后选择 " 分类"。
我需要将不同的规范化操作应用于不同的数字列。
在应用数学运算之前,您可能需要将整数和浮点数分隔开来。 为此,请使用数据类型,并应用多个条件。
单击 " 启动列选择器"。
对于 " 始于",请选择 " 无列"。
选择 " 包括 " 选项,选择 " 列类型",然后选择 " 数值"。
单击加号 (+) 以添加新的条件。
选择 " 包括 " 选项,选择 " 列类型",然后选择与下游操作不兼容的数值类型。
使用选择器选择的列太多。
通常,在导入数据集后,您会发现它有很多用于建模的列。 但是,你希望在以后保留它们以供输出,或用于标识事例。 为此,可以将数据集拆分为两个部分 (元数据,并使用 " 添加列" 根据需要将) 和更高版本的列用于建模。
单击 " 启动列选择器"。
对于 " 始于",请选择 " 无列"。
选择 " 包括 " 选项,选择 " 列类型",然后选择 " 功能"。
单击加号 (+) 以添加新的条件。
选择 " 包括 " 选项,选择 " 列类型",然后选择 " 标签"。
重复这些步骤,但从所有列开始,然后排除功能列和标签列以便仅创建元数据的数据集。
我不知道所需的列的索引值。
如果数据集中只有几列,则可以使用 " 可视化 " 选项查看前100行,然后确定哪个列为索引1、2,等等。
机器学习中的索引从1开始,因此第一列始终为1。
若要获取最后一列的索引,请在列选择器中查看列的两个列表: "可用列" 和 "所选列"。 列列表下的灰色条显示每个列表中列的计数。 因此,如果有24列可用并且选择了两列,则总计为26列,最后一列的索引为26。
用于提取数据集架构的另一种方法是使用 " 执行 R 脚本 " 模块获取带有索引号的列名称。
将数据集连接到执行 R 脚本模块。
在模块中,键入如下所示的脚本来输出列名称。 以
myindex
开头的行生成按顺序表示索引的序列。dataset1 <- maml.mapInputPort(1) # class: data.frame mycolnames <-names(dataset1); myindex <- seq(from = 1, to = length(mycolnames), by=1); outdata <- as.data.frame(cbind(myindex, mycolnames)); maml.mapOutputPort("outdata");
汽车价格数据集的结果
myindex mycolnames 1 symboling 2 规范化-损失 3 make
技术说明
如果你熟悉关系数据库,则此模块将创建数据的投影;因此,原始名称Project 列。 在数据库术语中,投影是一个函数,例如 SQL 或 LINQ 语句,它采用表格格式的数据作为输入并生成相关输出。
在关系代数中,投影是一元运算,以一组属性名称的形式写入。 投影的结果是这些属性与放弃其他属性的组。
预期输入
名称 | 类型 | 说明 |
---|---|---|
数据集 | 数据表 | 输入数据集 |
模块参数
名称 | 范围 | 类型 | 默认 | 说明 |
---|---|---|---|---|
选择列 | any | ColumnSelection | 选择要在投影数据集中保留的列。 |
Outputs
名称 | 类型 | 说明 |
---|---|---|
结果数据集 | 数据表 | 输出数据集 |
例外
异常 | 描述 |
---|---|
错误 0001 | 如果找不到数据集的一个或多个指定列,则会发生异常。 |
错误 0003 | 如果一个或多个输入数据集为 null 或为空,则会发生异常。 |
有关特定于 Studio (经典) 模块的错误列表,请参阅机器学习错误代码。
有关 API 异常的列表,请参阅机器学习 REST API 错误代码。