转换为 SVMLight
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
将数据输入转换为 SVM-Light 框架使用的格式
类别: 数据格式转换
模块概述
本文介绍如何使用 机器学习 Studio (经典) 中的"转换为 SVMLight"模块将数据集转换为 SVMLight 使用的格式。
SVM-Light 框架由康奈尔大学的研究人员开发。 该SVM-Light库实现 Vapnik 的支持向量机,但该格式已在其他地方采用,可用于许多机器学习任务,包括分类和回归。
有关详细信息,请参阅 SVMLight 支持向量机。
如何配置"转换为 SVMLight"
转换为 SVMLight 格式需要将每个大小写转换为以标签开头的数据行,后跟以冒号分隔的数字表示的特征值对。 转换过程 不会自动 识别正确的列,因此,在尝试转换之前,必须准备数据集中的列。 有关详细信息,请参阅 准备数据进行转换。
将 "转换为 SVMLight" 模块添加到试验。 可以在 机器学习 Studio (经典) 的数据格式转换类别中找到此模块。
连接要转换为 SVMLight 格式的数据集或输出。
运行试验。
右键单击模块的输出,选择"下载",将数据保存到本地文件进行修改,或者与支持 SVMLight 的程序一起重复使用。
准备要转换的数据
为了说明转换过程,此示例使用工作室中的 "流 水"数据集 (经典) 。
此示例数据集采用表格格式,格式如下。
可恢复性 | 频率 | 货币 | 时间 | 类 |
---|---|---|---|---|
2 | 50 | 12500 | 98 | 1 |
0 | 13 | 3250 | 28 | 1 |
1 | 1 | 4000 | 35 | 1 |
2 | 20 | 5000 | 45 | 1 |
1 | 24 | 6000 | 77 | 0 |
请注意,此数据集中名为 [Class] 的标签列是表中的最后一列。 但是,如果将数据集转换为 SVMLight 而不首先指示哪个列包含标签,则第一列 [Recency] 将用作标签,并且 [Class] 列被视为特征:
2 1:50 2:12500 3:98 4:1
0 1:13 2:3250 3:28 4:1
1 1:16 2:4000 3:35 4:1
若要确保在每个用例的行开头正确生成标签,必须添加"编辑元数据"模块的 两 个实例。
在"编辑元数据"的第一个实例中,选择" ([类]") ,对于"字段",选择"标签"。
在编辑元数据的第二个实例中,选择转换后的文件 ([Recency]、[Frequency]、[货币]、[时间]) 中所需的所有功能列,对于"字段",选择"功能"。
正确标识列后,可以运行 "转换为 SVMLight" 模块。 转换后,"流水"数据集的前几行现在采用以下格式:
标签值位于每个条目之前,后跟 [Recency]、[Frequency]、[Monetary] 和 [Time] 的值,分别标识为特征 1、2、3 和 4。
第五行中的标签值 0 已转换为 -1。 这是因为 SVMLight 仅支持二元分类标签。
1 1:2 2:50 3:12500 4:98
1 1:0 2:13 3:3250 4:28
1 1:1 2:16 3:4000 4:35
1 1:2 2:20 3:5000 4:45
-1 1:1 2:24 3:6000 4:77
不能直接将此文本数据用于 Azure ML或可视化。 但是,可以下载它到本地共享。
打开文件后 #
,建议添加以 为前行的注释行,以便添加有关源或原始特征列名称的注释。
若要在 Vowpal Wabbit 中使用 SVMLight 文件,并做出其他修改,如下所述: 转换为 Vowpal Wabbit 格式。 文件准备就绪后,将其上传到 Azure Blob 存储,然后直接从 Vowpal Wabbit 模块之一调用它。
示例
技术说明
本部分包含实现详情、使用技巧和常见问题解答。
使用提示
SVM-Light框架提供的可执行文件需要示例文件和模型文件。 但此模块只创建示例文件。 必须使用 SVMLight 库单独创建模型文件。
示例文件是包含训练示例的文件。
可选标头
第一行可以包含注释。 注释必须以数字符号 (#) 作为前缀。
“转换为 SVMLight”输出的文件格式不会创建标头。 可以编辑文件以添加注释、列名列表等。
训练数据
每个案例都位于其自己的行中。 case 由一个目标值后跟一系列索引和关联的特征值组成。
响应值必须是 1 或 -1(表示分类)或者数字(表示回归)。
目标值和每个索引值对由空格分隔。
训练数据示例
下表显示了如何将 Two-Class Iris 数据集的列中的值转换为表示形式,其中每个列都由索引表示,后跟冒号,然后是该列中的值:
Iris 数据集 | 已转换为 SVMLight 的 Iris 数据集 |
---|---|
1 6.3 2.9 5.6 1。8 | 1 1: 6.3 2: 2.9 3: 5.6 4:1。8 |
0 4.8 3.4 1.6 0。2 | -1 1: 4.8 2: 3.4 3: 1.6 4:0。2 |
1 7.2 3.2 6 1。8 | 1 1: 7.2 2: 3.2 3:6 4:1。8 |
请注意,在转换时功能列的名称将丢失。
使用 SVMLight 准备 Vowpal Wabbit 文件
SVMLight 格式类似于 Vowpal Wabbit 使用的格式。 若要将 SVMLight 输出文件更改为可用于定型 Vowpal Wabbit 模型的格式,只需在标签和特征列表之间添加一个管道符号。
例如,将以下输入行进行比较:
Vowpal Wabbit 格式,包括可选注释
# features are [Recency], [Frequency], [Monetary], [Time]
1 | 1:2 2:50 3:12500 4:98
1 | 1:0 2:13 3:3250 4:28
SVMLight 格式,包括可选注释
# features are [Recency], [Frequency], [Monetary], [Time]
1 1:2 2:50 3:12500 4:98
1 1:0 2:13 3:3250 4:28
预期输入
名称 | 类型 | 说明 |
---|---|---|
数据集 | 数据表 | 输入数据集 |
输出
名称 | 类型 | 说明 |
---|---|---|
结果数据集 | SvmLight | 输出数据集 |