使用相对表达式拆分数据集
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
本文介绍如何使用机器学习工作室的“拆分数据”模块中的“相对表达式拆分”选项 (经典) 。 当需要使用数值表达式将数据集划分为训练和测试数据集时,此选项非常有用。 例如:
- 年龄大于 40 岁与 40 岁以下
- 测试分数为 60 或更高与低于 60
- 排名值 1 与所有其他值
若要划分数据,请在数据中选择单个数值列,并定义用于计算每行的表达式。 相对表达式必须包含列名、值和运算符,例如大于和小于、等于和不等于。
此选项将数据集划分为 两 个组。
有关机器学习试验的数据分区的一般信息,请参阅拆分数据和分区和拆分。
相关任务
拆分数据模块中的其他选项:
使用正则表达式拆分数据:将正则表达式应用于单个文本列,并根据结果划分数据集
拆分推荐器数据集:划分建议模型中使用的数据集。 数据集应包含三列:项、用户和评级
使用相对表达式划分数据集
将 拆分数据 模块添加到 Stuio 中的试验,并将其作为输入连接到要拆分的数据集。
对于“拆分模式”,请选择“相对表达式拆分”。
在“ 关系表达式 ”文本框中,键入对单个列执行数值比较运算的表达式:
该列包含任何数值数据类型的数字,包括日期/时间数据类型。
表达式最多可以引用一个列名称。
对“与”运算使用“&”字符 (&),并对“或”运算使用竖线字符 (|)。
支持以下运算符:
<
、>
、<=
、>=
、==
、!=
不能使用
(
和)
对运算进行分组。
有关想法,请参阅 示例 部分。
运行试验,或右键单击模块,然后选择“ 已选择的运行”。
表达式将数据集分成两组行:值满足条件的行和所有剩余行。
如果需要执行其他拆分操作,可以添加 *拆分数据的第二个实例,或使用 应用 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 操作的) 。
- 相对表达式允许使用以下运算符:
<
、、>
、<=
、>=
==
、、!=
- 不支持使用括号对操作进行分组。