如果没有标记测试数据,如何运行LIBSVM的'svm-predict.exe'?

时间:2016-03-07 10:11:50

标签: machine-learning artificial-intelligence classification svm libsvm

我正在尝试使用LIBSVM对手写字符进行分类。我已成功执行'svm-train.exe'进行培训,并'svm-predict.exe'进行测试。对于两者,输入文件格式为 -

0 1:1 2:0 3:1 4:0
1 1:0 2:1 3:0 4:1
0 1:1 2:0 3:1 4:1
1 1:0 2:1 3:0 4:1

现在,我想用'svm-predict.exe'对未标记的数据进行分类。所以,现在输入文件将是这样的 -

1:1 2:0 3:1 4:0
1:0 2:1 3:0 4:1
1:1 2:0 3:1 4:1
1:0 2:1 3:0 4:1

但是,当我使用上述输入运行'svm-predict.exe'时,会显示错误 -

  

第1行的输入格式错误

这意味着 - 我无法将未标记的数据提供给'svm-predict.exe'。那么我想如何在真实世界的应用程序中使用它,我想在哪里标记未标记的数据?我用谷歌搜索,并问其他人但没有得到有用的解决方案。

备注:我得到的建议是用任意随机值标记测试数据(因为我不需要准确性)。但这对我来说似乎不合逻辑。有没有直接的方法来做到这一点?

2 个答案:

答案 0 :(得分:1)

答案是 - 不,'svm-predict.exe'不能在没有标签 的情况下使用。 “可执行文件”不是为现实世界使用而设计的,因为rzo已注释 -

  

svm-predict.exe仅用于“播放”而不是用于实际应用程序。最好的方法是使用库并编写一些自己的代码。

但是,如果我们只想将它用于演示避免编程的复杂性,那么除了使用“随机标签”之外别无他法。

要在项目中使用LIBSVM库,您可以访问此处 -

答案 1 :(得分:0)

你需要使用" svm-predict.exe"使用' test',' model'和' out'文件。 让我们假设您的列车文件 - > abc.train和你的测试文件 - > abc.test。 当你执行" svm-train.exe abc.train"在cmd中,它将创建" abc.train.model"当前目录中的文件。 为了预测,你需要执行" svm-predict.exe abc.test abc.train.model abc.out"在cmd。不要担心" abc.out"它会自动生成。 PS:在测试文件中,您需要像在train文件中一样描述行的类。 它将在abc.out上打印结果类,并通过比较out和test文件来提供准确性。