2

我最近才开始使用 libsvm。我一直在尝试训练我的特征得到模型,然后用相应的特征进行预测。不幸的是,我不断收到错误的文件格式。我经常做这个措施来削减我的特征,然后对它们进行训练,我得到了一个模型。

这就是我训练获得模型的方式。我正在通过 unix 命令行 btw 执行此操作。

./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。请帮忙。

4

1 回答 1

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 安装),并且可以解释格式中的错误(如果存在)。

于 2012-06-17T19:52:16.257 回答