libsvm 中的标准化数据错误

问题描述 投票:0回答:1

我正在学习 libsvm。

现在,我有 25 个 RGB 格式的训练文本文件,并且想要将数据标准化到 0 到 1 的范围

我知道 libsvm 格式是

Lable 1:value 2:value ...

但无论我做什么,它总是给我一种黄格式。

我的数据

  R    G    B
1 1:39 2:8 3:100
1 1:34 2:3 3:67

我输入了cmd

svm-scale -l 0 -u 1 train.txt > out.scale

输出

1 1:1 2:1 3:1 
1 1:-1 2:-1 3:-1 

什么没有输出

1 1:0.xxx 2:0.xxx 3:0.xxx ...

查了好几天的资料,然后有一些疑问。

  1. 如何正确地将 0 标准化为 1?

  2. 标签的具体用途是什么?

  3. 我有25个训练文本。我应该将它们全部复制到一个文本文件中然后进行转换吗?

machine-learning libsvm normalize
1个回答
0
投票

理解 svm-scale:

libsvm中的svm-scale命令用于缩放数据。 -l 和 -u 选项指定缩放的下限和上限。因此 -l 0 -u 1 对于 0 和 1 之间的缩放是正确的。 输入格式:确保您的输入数据采用正确的 libsvm 格式。每一行应代表一个样本。第一个数字是标签,后面是索引:值格式的特征。

诊断问题:

确保数据范围:检查 RGB 值的实际范围。如果它们全部相同或非常接近,缩放可能会导致 -1、1 或类似的意外结果。

确保您的数据具有可变性。 检查错误:验证输入文件中没有其他字符或格式问题。

要标准化 RGB 值,您通常会缩放每个特征(在您的情况下为 R、G 和 B),以便最小值(所有数据点上的每个特征)变为 0,最大值变为 1。

标签的用途

在 libsvm 格式和一般机器学习中,标签是您尝试预测的目标变量。对于监督学习任务:

分类:

标签是类别或类别。

回归:

标签是您预测的连续值。 在 RGB 数据中,如果您尝试根据这些颜色值对某些内容进行分类或预测,这就是标签所代表的内容。如果只是聚类或无监督学习,您可能根本不需要标签。

合并训练文本文件

如果您有 25 个单独的文件:

为了一致的缩放:在缩放之前将它们合并到一个文件中。这确保了所有数据的缩放比例是一致的,因为用于标准化的最大值和最小值是根据整个数据集计算的。 如何合并:您可以在大多数操作系统中轻松地合并文件。在 Unix/Linux 中,您可以使用 cat file1.txt file2.txt ... file25.txt >合并.txt。

尝试步骤:

合并文件:将所有 25 个训练文件连接成一个。

检查格式:确保组合文件的格式对于 libsvm 正确。

运行 svm-scale:在组合文件上使用命令 svm-scale -l 0 -u 1合并.txt > out.scale。

检查输出:检查.scale以确保值按预期标准化。

通过执行这些步骤,您应该能够正确规范化数据并准备将其与 libsvm 一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.