我最近刚刚开始使用 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
没有逗号,每个元素之间只有一个空格,但是当我进行预测时,它告诉我第 1 行的输入格式错误
。请帮忙。
最佳答案
您需要将训练标签设为 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 安装),可以解释格式错误(如果存在)。
关于unix - 如何在第 1 行 libsvm 处获得正确的输入格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11074204/