Python OpenCV Implémentation SVM
J'ai donc une matrice avec mes échantillons d'images (tous transformés en vecteurs) qui était courir à travers PCA/LDA, et un vecteur qui indique la classe de chaque image appartient. Maintenant, je veux utiliser le OpenCV SVM classe pour former mon SVM (je suis à l'aide de Python, OpenCV 2.3.1). Mais j'ai un problème avec la définition des paramètres:
test = cv2.SVM()
test.train(trainData, responses, ????)
Je suis coincé sur la façon de définir le type de SVM (linéaire, etc.) et d'autres choses. En C++, vous le définir en disant par exemple: svm_type=CvSVM::C_SVC...Python ne l'a pas. C++ a aussi une classe spéciale pour stocker ces paramètres -> CvSVMParams. Quelqu'un peut-il me donner un exemple en Python? Comme la définition de la SVM type, gamma, etc.
L'2.3.1 docs dit:
Python: cv2.SVM.train(trainData, responses[, varIdx[, sampleIdx[, params]]]) → retval
Quels sont varIdx et sampleIdx, et comment définir les paramètres?
source d'informationauteur Veles
Vous devez vous connecter pour publier un commentaire.
À utiliser OpenCV des algorithmes d'apprentissage automatique, vous devez écrire des classes wrapper:
1. Première classe parent
2. Enfin SvM wrapper:
3.Exemple d'utilisation:
Paramètres de réglage
Paramètres de réglage est simple - il suffit d'écrire un dictionnaire qui contient les paramètres clés. Vous devriez regarder la documentation originale pour voir tous les paramètres possibles et les valeurs autorisées: http://opencv.itseez.com/modules/ml/doc/support_vector_machines.html#cvsvmparams
Oui, les valeurs possibles pour svm_type et kernel_type sont en C++, mais il y a moyen facile de convertir ces constantes en Python représentation, par exemple CvSVM::C_SVC est écrit comme cv2.SVM_C_SVC en Python.
Prélude
Pour obtenir plus de wrappers pour des algorithmes d'apprentissage automatique, regarder dans letter-recog.py exemple dans votre opencv exemples sur le disque ou d'ouvrir l'url de OpenCV référentiel: https://github.com/Itseez/opencv/tree/master/samples/python2
Adapté de timgluz version, mais utilise des "train_auto" au lieu de "train".
cv2 trouverez les paramètres de "C", "gamma", ... pour nous.