我在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的交叉验证准确性。
谢谢!
答案 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++;
}
}