Вычислить целевое значение LIBSVM Matlab

Я тренирую SVM внутри цикла for, изменяя характеристики своих экземпляров, и я хотел бы построить график конечного целевого значения по сравнению с итерацией. Я использую LIBSVM в Matlab, но я не нахожу конечное целевое значение в возвращаемой модели явно. Как вычислить конечное целевое значение с возвращаемой моделью при каждом взаимодействии?

Можно прочитать сценарий, напечатанный svmtrain, но я хотел бы вычислить это значение без этого трюка.

П.Д. У меня есть базовые знания C++.


person escorciav    schedule 16.05.2012    source источник
comment
Вы используете C-SVM? Если это так, см. часто задаваемые вопросы csie.ntu.edu.tw /~cjlin/libsvm/faq.html#f401. Если нет, можете ли вы указать название функции, которую вы используете для обучения, и результат обучения (если есть)?   -  person kitchenette    schedule 17.05.2012
comment
Да, я использую C-SVM в Matlab с функцией svmtrain. Это возвращает структуру модели с параметрами: nr_class, totalSV, rho, Label, ProbA, ProbB, nSV, sv_coef, SVs.   -  person escorciav    schedule 18.05.2012


Ответы (1)


Я модифицирую svm.cpp и svm.h, чтобы вернуть целевое значение, добавив несколько строк кода.

1) Добавьте новое поле в структуры svmmodel (svm.h) и solution_function (svm.cpp).

2) Скопируйте si.obj в новое поле функции решения.

3) Скопируйте поле catch с помощью функции решения в более новое поле структуры svmmodel (функция svm_train в svm.cpp).

4) Измените svm_model_matlab.c, чтобы допустить новое поле в структуре svmmodel.

  • Увеличьте переменную NUMBER_OF_FIELD и добавьте новое поле в структуру вывода.
  • В соответствии с порядком в выходной структуре модифицируйте функцию model_to_matlab_struct. (Легко скопировать код, используемый для поля rho, и заменить rho именем вашей переменной)
  • Измените функцию matrix_matlab_to_model

Это действительно легко и просто.

Я могу передать новые файлы только по электронной почте с целью: LIBSVM-ObjModification

person escorciav    schedule 14.06.2012
comment
два парня запросили эти моды, которые я не предоставляю, потому что это немного сложно, и я не тестировал их подробно. Если у кого-то есть форк libsvm, я могу выслать вам изменения. С другой стороны, вы можете использовать моды, предложенные Varma в simpleMKL, что полезно и просто. - person escorciav; 29.06.2014