2011-03-01 3 views
1

Après avoir obtenu le svm_model de svm_train en utilisant libsvm, comment obtenir le rho et les SV du modèle? Je sais que ces valeurs sont imprimées quand je reçois le modèle, mais je n'ai aucune idée de comment obtenir les SV. ex:Comment obtenir des vecteurs de support et des valeurs de rho à partir de svm_model (en Python)?

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

Maintenant, comment obtenir les valeurs de rho et de svm_model SVs?

+0

Je pensais que svm_model avait accesseurs pour rho et .... Qu'est-ce que SVs l'objet ci-dessus ont dedans? – dfb

Répondre

1

Après presque un mois, j'ai trouvé qu'il n'y avait aucun moyen d'obtenir le rho ou SVs du svm_model ainsi généré. Si quelqu'un cherche à en trouver un, utilisez scikit-learn qui vous donne les vecteurs de support, les doubles interceptions et la valeur rho sans aucun problème. De plus, il est plus rapide que l'implémentation python de libsvm et supporte les matrices et matrices numpy.

1

Si vous exécutez l'exécutable svm_train.exe qui est livré avec l'installation libSVM, vous pouvez constater qu'il génère un fichier modèle en sortie, XXX.model. Si vous inspectez ce modèle avec un éditeur, vous pouvez y trouver les valeurs rho et la liste des vecteurs de support.

On dirait que dans le code C++/C, il n'y a pas de support pour extraire cette information de l'objet.

4

Si vous utilisez le package svmutil, alors vous pouvez obtenir des vecteurs de support, les coefficients et rho comme suit,

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() 
Questions connexes