libsvm java中的交叉验证准确性

Posted

技术标签:

【中文标题】libsvm java中的交叉验证准确性【英文标题】:cross validation accuracy in libsvm java 【发布时间】:2013-12-06 10:18:58 【问题描述】:

我在 java 中使用 LIBSVM,我需要计算 AUC 值。自述文件说我们可以使用 -v 选项将数据拆分为 n 个部分并计算交叉验证准确度/均方误差,但在 java 中我使用的是没有 -v 选项的 svm_train 函数(它有 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 的交叉验证准确性。

谢谢!

【问题讨论】:

【参考方案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++;
    

【讨论】:

以上是关于libsvm java中的交叉验证准确性的主要内容,如果未能解决你的问题,请参考以下文章

libsvm 交叉验证与 matlab 中的预计算内核

网格搜索中的交叉验证非常慢(libsvm)

如何在 LibSVM 中实现十折交叉验证

如何通过 LIBSVM 使用 platt 缩放和交叉验证?

libsvm交叉验证与网格搜索(参数选择)

使用 libsvm 进行交叉验证以找到最佳参数