libsvm java中的交叉验证准确性

时间:2013-11-21 18:53:20

标签: java machine-learning svm libsvm

我在java中使用LIBSVM,我需要计算AUC值。 read me文件说我们可以使用-v选项将数据分成n个部分并计算它们的交叉验证准确度/均方误差,但在java中我使用的是svm_train函数,它没有{{1选项(它有SVM问题和SVM参数作为输入)。所以我使用的-v函数如下所示,但它不会返回目标数组中的精度(返回标签)。

svm_cross_validation

我得到的结果如下,没有显示任何准确性

svm.svm_cross_validation(SVM_Prob, SVM_Param, 3, target);

我的数据不是不平衡的,所以我不确定是否应该使用LibLINEAR。 谁能告诉我如何在java中找到libsvm的交叉验证准确性。

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以自己写一个简单的:

double[] target = new double[labels.length];

svm.svm_cross_validation(problem, param, 3, target);
double correctCounter = 0;
for (int i = 0; i < target.length; i++) {
   if (target[i] == labels[i]) {
      correctCounter++;
   } 
}