SVM (SVC) de scikit-learn classifie par un contre un lors de l'exécution d'une classification multi-classe. Cependant, un contre le reste peut avoir une meilleure performance de discrimination (je vois des rapports qu'il y en a beaucoup). Utilisation de OneVsRestClassifier de sklearn.multiclass Notez comment ** la classification SVM multi-classes en un contre le reste **. (Remarque) Cependant, LinearSVC utilise un contre le reste par défaut.
Considérez le problème de classification $ K $.
One-versus-the-rest Utilisez les classificateurs $ K $ pour résoudre le problème de classification à deux classes de l'entrée dans une classe spécifique ou de l'une des autres classes $ K-1 $.
One-versus-one Utilisez les classificateurs $ K (K-1) / 2 $ pour résoudre le problème de classification à deux classes de l'entrée dans une classe spécifique ou dans une autre classe spécifique.
En utilisant l'ensemble de données de chiffres, la classification en 10 classes des caractères manuscrits est effectuée par SVM du noyau RBF.
python
from sklearn.datasets import load_digits
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import SVC
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
python
digits = load_digits()
train_x, test_x, train_y, test_y = train_test_split(digits.data, digits.target)
python
C = 1.
kernel = 'rbf'
gamma = 0.01
python
estimator = SVC(C=C, kernel=kernel, gamma=gamma)
classifier = OneVsRestClassifier(estimator)
classifier.fit(train_x, train_y)
pred_y = classifier.predict(test_x)
python
classifier2 = SVC(C=C, kernel=kernel, gamma=gamma)
classifier2.fit(train_x, train_y)
pred_y2 = classifier2.predict(test_x)
python
print 'One-versus-the-rest: {:.5f}'.format(accuracy_score(test_y, pred_y))
print 'One-versus-one: {:.5f}'.format(accuracy_score(test_y, pred_y2))
One-versus-the-rest: 0.95333 One-versus-one: 0.79111
Un contre le reste montre des performances de discrimination plus élevées.
pylearn2.models.svm (wrapper sklearn) sklearn.multiclass.OneVsRestClassifier Ex. sklearn.multiclass.OneVsRestClassifier sklearn.svm
Recommended Posts