2011-03-01 2 views
1

После того как я получу svm_model из svm_train с помощью libsvm, как мне получить rho и SVs из модели? Я знаю, что эти значения распечатываются, когда я получаю модель, но я понятия не имею, как получить SV. например:Как получить векторы поддержки и значения rho из svm_model (в Python)?

svm_model = svmutil.svm_train(Labels,X, svm_options) 

Теперь, как получить значение Rho и от svm_model КИ?

+0

Я думал svm_model был аксессоры для Rho и КТС .... Что объект выше есть в этом? – dfb

ответ

1

Спустя почти месяц я обнаружил, что нет способа получить rho или SV из созданного svm_model. Если кто-то пришел искать его, используйте scikit-learn, который дает вам векторы поддержки, двойные перехваты и значение rho без каких-либо проблем. Кроме того, он быстрее, чем реализация libsvm на python и поддерживает массивы и матрицы numpy.

1

Если вы запустите исполняемый файл svm_train.exe, который поставляется с самой установкой libSVM, вы можете обнаружить, что он создает файл модели в качестве вывода, XXX.model. Если вы проверите эту модель с помощью редактора, вы можете найти там значения rho и список векторов поддержки.

Похоже, что в коде C++/C нет поддержки для извлечения этой информации из объекта.

4

Если вы используете пакет svmutil, то вы можете получить векторы поддержки, коэффициенты и Rho следующим образом,

m = svmutil.svm_train(y, xs, "-s 3 -t 2") # EPSILON_SVR and RBF kernel 
rho = m.rho[0] 
svs = m.get_SV() # Dictionary with indices 1, 2 corresponding to i-th dim on support vector 
sv_coeffs = m.get_sv_coef()