[PYTHON] SVM multi-classes avec scikit-learn

SVM multi-classes avec scikit-learn

Objectif

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.

Un contre le reste et un contre un

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.

SVM multi-classes

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.

Importation de package

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

Lire les données

python


digits = load_digits()
train_x, test_x, train_y, test_y  = train_test_split(digits.data, digits.target)

Paramètres des hyper paramètres

python


C = 1.
kernel = 'rbf'
gamma  = 0.01

Identification par un contre le reste

python


estimator = SVC(C=C, kernel=kernel, gamma=gamma)
classifier = OneVsRestClassifier(estimator)
classifier.fit(train_x, train_y)
pred_y = classifier.predict(test_x)

Identification par one-versus-the-one (par défaut)

python


classifier2 = SVC(C=C, kernel=kernel, gamma=gamma)
classifier2.fit(train_x, train_y)
pred_y2 = classifier2.predict(test_x)

Résultat d'identification

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.

Liens connexes

pylearn2.models.svm (wrapper sklearn) sklearn.multiclass.OneVsRestClassifier Ex. sklearn.multiclass.OneVsRestClassifier sklearn.svm

Recommended Posts

SVM multi-classes avec scikit-learn
SVM essayant l'apprentissage automatique avec scikit-learn
Isomap avec Scikit-learn
SVM (classification multi-classes)
DBSCAN avec scikit-learn
Clustering avec scikit-learn (1)
Clustering avec scikit-learn (2)
PCA avec Scikit-learn
kmeans ++ avec scikit-learn
Essayez SVM avec scikit-learn sur Jupyter Notebook
Validation croisée avec scikit-learn
Clustering avec scikit-learn + DBSCAN
Apprentissage Scikit-Learn avec la chimioinfomatique
DBSCAN (clustering) avec scikit-learn
Installez scikit.learn avec pip
Calculer tf-idf avec scikit-learn
Réseau de neurones avec Python (scikit-learn)
Traitement parallèle avec Parallel de scikit-learn
[Python] Régression linéaire avec scicit-learn
Régression linéaire robuste avec scikit-learn
Recherche en grille d'hyper paramètres avec Scikit-learn
Créer un arbre déterminé avec scikit-learn
Segmentation d'image avec scikit-image et scikit-learn
Identifiez les valeurs aberrantes avec le classificateur de forêt aléatoire de scikit-learn
Cartes propres laplaciennes avec Scikit-learn (notes personnelles)
Factorisation matricielle non négative (NMF) avec scikit-learn
Scikit-learn DecisionTreeClassifier avec des valeurs de type datetime
L'analyse de clustering la plus basique avec scikit-learn
Classification multi-étiquette d'images multi-classes avec pytorch
[Scikit-learn] J'ai joué avec la courbe ROC
Classification multi-étiquettes par forêt aléatoire avec scikit-learn
Regrouper les écoles représentatives à l'été 2016 avec scikit-learn
Implémentez un estimateur auto-créé minimal avec scikit-learn
Remplissez les valeurs manquantes avec Scikit-learn impute
Visualisez l'arbre de décision scikit-learn avec Treemap de Plotly