使用相对表达式拆分数据集

重要

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

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

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

本文介绍如何使用机器学习工作室的“拆分数据”模块中的“相对表达式拆分”选项 (经典) 。 当需要使用数值表达式将数据集划分为训练和测试数据集时,此选项非常有用。 例如:

  • 年龄大于 40 岁与 40 岁以下
  • 测试分数为 60 或更高与低于 60
  • 排名值 1 与所有其他值

注意

适用于机器学习工作室仅 (经典)

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

若要划分数据,请在数据中选择单个数值列,并定义用于计算每行的表达式。 相对表达式必须包含列名、值和运算符,例如大于和小于、等于和不等于。

此选项将数据集划分为 个组。

有关机器学习试验的数据分区的一般信息,请参阅拆分数据和分区和拆分

拆分数据模块中的其他选项:

使用相对表达式划分数据集

  1. 拆分数据 模块添加到 Stuio 中的试验,并将其作为输入连接到要拆分的数据集。

  2. 对于“拆分模式”,请选择“相对表达式拆分”

  3. 在“ 关系表达式 ”文本框中,键入对单个列执行数值比较运算的表达式:

    • 该列包含任何数值数据类型的数字,包括日期/时间数据类型。

    • 表达式最多可以引用一个列名称。

    • 对“与”运算使用“&”字符 (&),并对“或”运算使用竖线字符 (|)。

    • 支持以下运算符:<><=>===!=

    • 不能使用 () 对运算进行分组。

    有关想法,请参阅 示例 部分。

  4. 运行试验,或右键单击模块,然后选择“ 已选择的运行”。

    表达式将数据集分成两组行:值满足条件的行和所有剩余行。

    如果需要执行其他拆分操作,可以添加 *拆分数据的第二个实例,或使用 应用 SQL 转换 模块并定义 CASE 语句。

相对表达式的示例

以下示例演示如何使用拆分数据模块中的“相对表达式”选项划分数据集:

使用日历年

一个常见的场景是按年分割数据集。 以下表达式选择 Year 列中的值大于 2010 的所有行。

\"Year" > 2010

日期表达式必须考虑数据列中包含的所有日期部分,并且数据列中的日期格式必须一致。

例如,在使用 格式 mmddyyyy的日期列中,表达式应如下所示:

\"Date" > 1/1/2010

使用列索引

以下表达式演示如何使用列索引,在数据集的第一列中选择包含小于或等于 30 但不等于 20 的值的所有行。

(\0)<=30 & !=20

使用多个拆分对时间值的复合运算

假设你要拆分日志数据表,以对运行时间过长的查询进行分组。 可以使用列 Elapsed上的以下相对表达式来获取运行超过 1 分钟的查询。

\"Elapsed" >00:01:00

若要获取响应时间小于 1 分钟但超过 30 秒的查询,请在右侧输出中添加另一个 拆分数据的 实例,并使用如下所示的表达式:

\"Elapsed" <:00:01:00 & >00:00:30

根据日期值拆分数据集

下面的相对表达式使用列 dt1中的日期值对数据集进行除法。

\"dt1" > 10-08-2015

日期大于 2015 年 8 月 10 日的行将添加到输出数据集) 左第一个 (。

日期为 10-08-2015 或更早日期的行将添加到输出数据集的第二 (右侧) 。

技术说明

本部分包含实现详情、使用技巧和常见问题解答。

限制

以下限制适用于数据集上的相对表达式:

  • 相对表达式只能应用于数值数据类型和日期/时间数据类型。
  • 关系表达式可以引用一个列名称的最大值。
  • 对 AND 操作使用与号字符 (&) ,管道字符 (|OR 操作的) 。
  • 相对表达式允许使用以下运算符:<、、><=>===、、!=
  • 不支持使用括号对操作进行分组。

另请参阅

样本和拆分
分区和采样