如何在第1行libsvm获取正确的输入格式

时间:2012-06-17 19:34:14

标签: unix machine-learning svm libsvm

我刚刚开始使用libsvm。我已经尝试了一段时间来训练我的功能获取模型,然后使用相应的功能进行预测。不幸的是,我连续错误的文件格式。我经常做这个措施削减我的功能,然后训练他们,我得到了一个模型。

这就是我训练模型的方法。 我是通过unix命令行顺便说一下。

  

./ svm-train -t 0 -b 1 svmtrainModel1Revised.txt TrainedModel1.svm

0 1:8.109121    2:11.063075 3:9.265099 4:7.392232  5:9.577386
0 1:7.497237    2:10.314889 3:9.330452 4:8.658748 5:9.493017
0 1:7.579283    2:9.853208 3:9.863712 4:8.48306 5:9.84812
1 1:7.683603    2:10.323639 3:10.616027 4:7.039438 5:10.321418
1 1:7.645213    2:9.742212 3:9.957533 4:8.810831 5:8.86067
0 1:7.738999    2:9.956453 3:9.643299 4:8.553764 5:9.824224
1 1:7.968907    2:10.610946 3:9.061123 4:7.84069 5:9.793263

我从上面得到的模型我基于此预测。

  

./ svm-predict -b 1 svmtest1RevisedA.txt TrainedModel1.svm labelmodel1.txt

这些功能与上述格式相同,但它们缺乏基本事实。

8.139867    10.146595   9.554127    8.409128    9.380923
7.691873    9.820682    9.777709    9.136581    9.038513
8.629565    10.684548   9.192018    9.031779    9.733009
7.796154    10.871736   9.113837    7.329961    10.071653
7.235544    9.994834    10.601161   8.720384    10.112152
8.008006    10.75276    10.755063   7.517268    9.415618
7.857692    9.936756    9.556366    8.941176    8.933603
7.806821    9.934397    9.324827    8.422852    8.797105

没有逗号,每个元素之间只有一个空格,但是当我预测它时会告诉我Wrong input format at line 1。请帮忙。

1 个答案:

答案 0 :(得分:2)

您需要将训练标签设为1或-1。这是机器学习世界的SVM子世界中的标准。此外,您可能需要取出任何选项卡,并确保您的空格只包含空格。

以下是我使用libsvm训练的文件中的几行:

-1 1:0.000000 2:0.274121 3:0.448146 4:0.586426 5:0.599033 6:0.112481
1 1:0.406015 2:0.411721 3:0.588133 4:0.757176 5:0.462532 6:0.196860
-1 1:0.131868 2:0.432938 3:0.614296 4:0.711778 5:0.178528 6:0.217912
1 1:0.489093 2:0.393096 3:0.568940 4:0.744675 5:0.527169 6:0.590553
-1 1:0.077703 2:0.226890 3:0.408387 4:0.523369 5:0.837690 6:0.454314

如果您仍然对输入格式感到困惑,请使用脚本checkdata.py。它位于libsvm-3.12/tools目录(相对于您的libsvm安装),并且可以解释格式中的错误(如果存在)。