libsvm java 中的交叉验证准确性

问题描述 投票:0回答:1

我在 java 中使用 LIBSVM,我需要计算 AUC 值。自述文件说我们可以使用

-v
选项将数据分成 n 部分并计算它们的交叉验证准确性/均方误差,但在 java 中我使用的 svm_train 函数没有
-v
选项(它有 SVM 问题和 SVM 参数作为输入)。所以我正在使用
svm_cross_validation
函数,但它不会返回目标数组中的准确性(返回标签)。

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

我得到如下所示的结果,但不显示任何准确性

optimization finished, #iter = 21
nu = 0.06666666666666667
obj = -21.0, rho = 0.0
nSV = 42, nBSV = 0
Total nSV = 42

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

java machine-learning svm libsvm
1个回答
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++;
   } 
}
© www.soinside.com 2019 - 2024. All rights reserved.