Libsvm:第 1 行输入格式错误

Libsvm : Wrong input format at line 1

我正在尝试使用 Libsvm,但出现以下行为:

root@bcfd88c873fa:/home/libsvm# ./svm-train myfile
Wrong input format at line 1
root@bcfd88c873fa:/home/libsvm# head -n 5 myfile
2   0:0.00000 8:0.00193 2:0.00000 1:0.00000 10:0.00722
3   6:0.00235 2:0.00000 0:0.00000 1:0.00000 5:0.00155
4   0:0.00000 1:0.00000 2:0.00000 4:0.00187
3   6:0.00121 8:0.00211 1:0.00000 2:0.00000 0:0.00000
3   0:0.00000 2:0.00000 1:0.00000

你能看出格式有什么问题吗?它适用于其他 svm 实现,例如 Go 中的 this one

谢谢,

提供的格式正确。 LIBSVM 3.22Java 接口确实按预期处理提供的文件。

但是,我也尝试了 Windows 和 Linux 接口,它们的行为与您的问题中描述的一样。

svm-train.exe myfile
Wrong input format at line 1

经过调查,我发现 feature-ids 必须 sorted 才能被工具正确处理(这似乎是一个错误,因为 Java 接口不受此限制...):

2   0:0.00000 1:0.00000 2:0.00000 8:0.00193 10:0.00722
3   0:0.00000 1:0.00000 2:0.00000 5:0.00155 6:0.00235
4   0:0.00000 1:0.00000 2:0.00000 4:0.00187
3   0:0.00000 1:0.00000 2:0.00000 6:0.00121 8:0.00211
3   0:0.00000 1:0.00000 2:0.00000

此外,由于 LIBSVM 使用 sparse-data format,您可以通过跳过值为零的特征来简化数据集:

2   8:0.00193 10:0.00722
3   5:0.00155 6:0.00235
4   4:0.00187
3   6:0.00121 8:0.00211
3