2013-11-21 3 views
1

Я использую LIBSVM в java, и мне нужно рассчитать значения AUC. В файле read me указано, что мы можем использовать опцию -v, которая разбивает данные на n частей и вычисляет ошибку перекрестной проверки/среднеквадратичную ошибку, но в java я использую функцию svm_train, которая не имеет опции -v (у нее есть проблема SVM и параметры SVM в качестве входных данных). Поэтому я использую функцию svm_cross_validation, как показано ниже, но она не возвращает точность (возвращает метки) в целевом массиве.перекрестная проверка достоверности в libsvm java

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. может кто-нибудь сказать мне, как найти точность проверки перекрестка libsvm в java.

Спасибо!

ответ

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++; 
    } 
} 
Смежные вопросы