我刚刚开始使用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
。请帮忙。
答案 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安装),并且可以解释格式中的错误(如果存在)。