在数据集中选择列

重要

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

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

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

选择运算中要包含或排除的数据集的列

类别: 数据转换/操作

注意

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

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

模块概述

本文介绍如何使用机器学习 Studio 中的 "选择数据集中的列" 模块 (经典) ,以选择要在下游操作中使用的列的子集。 该模块并非从物理角度删除源数据集中的列,而是创建列的子集,这与数据库视图和投影极其相似 。

如果需要限制可用于下游操作的列,或者如果想要通过删除不需要的列来减小数据集的大小,则此模块特别有用。

数据集中的列的输出顺序和原始数据中的相同,即使你以不同的顺序指定它们,也是如此。

如何使用数据集中的选择列

此模块没有参数。 可使用列选择器选择要包含或排除的列。

按名称选择列

此模块介绍了按名称选择列的多个选项:

  • 筛选和搜索

    单击“按名称”选项 。

    如果连接的数据集已填充,则应显示可用列的列表。 如果未显示列,则可能需要运行上游模块以查看列的列表。

    请在搜索框中键入内容以筛选列表。 例如,如果在搜索框中键入字母 w,则会对列表进行筛选,以显示包含字母 w 的列名称。

    选择这些列,然后单击右箭头按钮,将选中的列移到右窗格中的列表中。

    • 若要选择列名称的连续范围,请按住 Shift 并单击 。
    • 若要将单独的列添加到所选内容,请按住 Ctrl 并单击 。

    单击复选标记按钮,保存并关闭。

  • 结合其他规则使用名称

    单击“按规则”选项 。

    选择一种规则,如显示特定数据类型的列。

    然后,单击该类型的单个列的名称,将其添加到所选内容列表。

  • 键入或粘贴用逗号分隔的列名称列表

    如果数据集非常宽,使用索引或生成的名称列表可能更简单,而不是单独选择列。 假设你提前准备好了列表:

    1. 单击“按规则”选项 。
    2. 选择“没有列”,再选择“包括”,然后在文本框中单击红色感叹号。
    3. 粘贴或键入之前确认的以逗号分隔的列名称列表。 如果有任何列存在无效名称,则无法保存模块,因此请事先检查名称。

    你也可以使用此方法来指定使用其索引值的列的列表。 请参阅 " 示例 " 部分,了解有关如何使用列索引的提示。

按类型选择

如果使用“按规则”选项,则可以对列所选内容应用多个条件 。 例如,你可能只需要获取数值数据类型的功能列。

" 开始 " 选项确定你的起点,并且对于了解结果非常重要。

  • 如果选择“所有列”选项,则所有列都将添加到列表中 。 然后,必须使用“排除”选项删除满足特定条件的列 。

    例如,可以从所有列开始,然后按名称或按类型删除列。

  • 如果选择“没有列”选择,则列的列表为空 。 然后指定条件以向列表添加列 。

    如果应用多个规则,则每个条件都是累加的 。 例如,假设从没有列开始,然后添加一个规则来获取所有数字列。 在汽车价格数据集中生成 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

示例

有关如何 在数据集中选择列的示例,请参阅 模型库中的以下示例试验:

列选择的常见方案

下面的示例介绍了在机器学习中,用户应用 在数据集中选择列 的一些典型方法,并提供了有关如何选择列的一些提示:

  • 我要从数据集中删除文本列,以便可以将数学运算应用于所有数字列。

    许多操作只要求数据集中存在数值列。 您可以通过排除文本并排除分类列( (表示离散类别) 的数字)来暂时删除导致错误的列。

    1. 单击 " 启动列选择器"。

    2. 对于 " 于",请选择 " 所有列"。

    3. 选择 " 排除 " 选项,选择 " 列类型",然后选择 " 字符串"。

    4. 单击加号 (+) 以添加新的条件。

    5. 选择 " 排除 " 选项,选择 " 列类型",然后选择 " 分类"。

  • 我只需将功能选择应用于分类特征列。

    如果需要分隔相似类型的列,可以应用多个条件。 例如,功能可以是分类或数字,但某些功能选择模块不允许使用非数值字段,因此您首先必须获取功能,然后添加条件以仅获取数值特性。

    1. 单击 " 启动列选择器"。

    2. 对于 " 于",请选择 " 无列"。

    3. 选择 " 包括 " 选项,然后选择 " 所有功能"。

    4. 单击加号 (+) 以添加新的条件。

    5. 选择 " 包括 " 选项,选择 " 列类型",然后选择 " 分类"。

  • 我需要将不同的规范化操作应用于不同的数字列。

    在应用数学运算之前,您可能需要将整数和浮点数分隔开来。 为此,请使用数据类型,并应用多个条件。

    1. 单击 " 启动列选择器"。

    2. 对于 " 于",请选择 " 无列"。

    3. 选择 " 包括 " 选项,选择 " 列类型",然后选择 " 数值"。

    4. 单击加号 (+) 以添加新的条件。

    5. 选择 " 包括 " 选项,选择 " 列类型",然后选择与下游操作不兼容的数值类型。

  • 使用选择器选择的列太多。

    通常,在导入数据集后,您会发现它有很多用于建模的列。 但是,你希望在以后保留它们以供输出,或用于标识事例。 为此,可以将数据集拆分为两个部分 (元数据,并使用 " 添加列" 根据需要将) 和更高版本的列用于建模。

    1. 单击 " 启动列选择器"。

    2. 对于 " 于",请选择 " 无列"。

    3. 选择 " 包括 " 选项,选择 " 列类型",然后选择 " 功能"。

    4. 单击加号 (+) 以添加新的条件。

    5. 选择 " 包括 " 选项,选择 " 列类型",然后选择 " 标签"。

    6. 重复这些步骤,但从所有列开始,然后排除功能列和标签列以便仅创建元数据的数据集。

  • 我不知道所需的列的索引值。

    如果数据集中只有几列,则可以使用 " 可视化 " 选项查看前100行,然后确定哪个列为索引1、2,等等。

    • 机器学习中的索引从1开始,因此第一列始终为1。

    • 若要获取最后一列的索引,请在列选择器中查看列的两个列表: "可用列" 和 "所选列"。 列列表下的灰色条显示每个列表中列的计数。 因此,如果有24列可用并且选择了两列,则总计为26列,最后一列的索引为26。

    用于提取数据集架构的另一种方法是使用 " 执行 R 脚本 " 模块获取带有索引号的列名称。

    1. 将数据集连接到执行 R 脚本模块。

    2. 在模块中,键入如下所示的脚本来输出列名称。 以 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 错误代码

另请参阅

操作