Я следил за сообщением, на которое вы ссылались, и получил результаты без ошибок. Для меня точность перекрестной проверки для набора данных «fisheriris» составляет 96,6667%. Для вас я думаю, что ошибка в том, что ошибка связана с «svmtrain», как сказано в первом комментарии. Далее я покажу, как я запускал код.
1) загрузите libsvm с http://www.csie.ntu.edu.tw/~cjlin/libsvm/ и распакуйте его.
2) изменить имена файлов svmtrain.c
и svmpredict.c
в \libsvm-3.16\matlab\
на libsvmtrain.c
и libsvmpredict.c
. Затем найдите make.m
в той же папке и измените строку 16 и строку 17 на
mex CFLAGS="\$CFLAGS -std=c99" -largeArrayDims libsvmtrain.c ../svm.cpp svm_model_matlab.c
mex CFLAGS="\$CFLAGS -std=c99" -largeArrayDims libsvmpredict.c ../svm.cpp svm_model_matlab.c
3) запустите make.m, который вы только что изменили на файлы mex *.c.
4) после принятого ответа на сообщение 10-кратная перекрестная проверка в SVM "один против всех" (с использованием LibSVM) , вы создаете четыре файла .m для каждой функции, crossvalidation.m
, libsvmcrossval_ova.m
, libsvmpredict_ova.m
, libsvmtrain_ova.m
и запускаете основную функцию, предоставленную этим ответчиком , который выглядит следующим образом:
clear;clc;
%# laod dataset
S = load('fisheriris');
data = zscore(S.meas);
labels = grp2idx(S.species);
%# cross-validate using one-vs-all approach
opts = '-s 0 -t 2 -c 1 -g 0.25'; %# libsvm training options
nfold = 10;
acc = libsvmcrossval_ova(labels, data, opts, nfold);
fprintf('Cross Validation Accuracy = %.4f%%\n', 100*mean(acc));
%# compute final model over the entire dataset
mdl = libsvmtrain_ova(labels, data, opts);
acc = libsvmtrain(labels, data, sprintf('%s -v %d -q',opts,nfold));
model = libsvmtrain(labels, data, strcat(opts,' -q'));
person
tqjustc
schedule
22.03.2013
svmtrain
и libsvmsvmtrain
? Часто задаваемые вопросы по LIBSVM - person AGS   schedule 22.03.2013svmtrain
. - person AGS   schedule 22.03.2013