[PYTHON] Mehrklassen-SVM mit Scikit-Learn

Mehrklassen-SVM mit Scikit-Learn

Zweck

SVM (SVC) von Scikit-Learn klassifiziert bei der Durchführung einer Mehrklassenklassifizierung nach Eins gegen Eins. Eins gegen den Rest kann jedoch eine bessere Diskriminierungsleistung aufweisen (ich sehe Berichte, dass es viele gibt). Verwenden von OneVsRestClassifier von sklearn.multiclass Notieren Sie sich, wie Sie die SVM-Klassifizierung für mehrere Klassen in One-versus-the-Rest ** durchführen. (Hinweis) LinearSVC verwendet jedoch standardmäßig "Eins gegen den Rest".

Eins gegen den Rest und Eins gegen eins

Betrachten Sie das $ K $ -Klassifizierungsproblem.

One-versus-the-rest Verwenden Sie $ K $ -Klassifizierer, um das Zwei-Klassen-Klassifizierungsproblem der Eingabe einer bestimmten Klasse oder einer der anderen $ K-1 $ -Klassen zu lösen.

One-versus-one Verwenden Sie $ K (K-1) / 2 $ -Klassifizierer, um das Zwei-Klassen-Klassifizierungsproblem der Eingabe einer bestimmten Klasse oder einer anderen bestimmten Klasse zu lösen.

SVM mit mehreren Klassen

Unter Verwendung des Ziffern-Datensatzes wird eine 10-Klassen-Klassifizierung von handgeschriebenen Zeichen durch SVM des RBF-Kernels durchgeführt.

Paketimport

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

Daten lesen

python


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

Hyper-Parametereinstellungen

python


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

Identifikation durch One-versus-the-Rest

python


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

Identifikation durch Eins gegen Eins (Standard)

python


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

Identifikationsergebnis

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

Eins gegen den Rest zeigt eine höhere Diskriminierungsleistung.

ähnliche Links

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

Recommended Posts

Mehrklassen-SVM mit Scikit-Learn
SVM versucht maschinelles Lernen mit Scikit-Learn
Isomap mit Scikit-lernen
SVM (Mehrklassenklassifikation)
DBSCAN mit Scikit-Learn
Clustering mit Scikit-Learn (1)
Clustering mit Scikit-Learn (2)
PCA mit Scikit-Learn
kmeans ++ mit scikit-learn
Probieren Sie SVM mit scikit-learn auf Jupyter Notebook aus
Kreuzvalidierung mit Scikit-Learn
Clustering mit scikit-learn + DBSCAN
Scikit-Lernen mit Chemoinfomatik
DBSCAN (Clustering) mit Scikit-Learn
Installieren Sie scikit.learn mit pip
Berechnen Sie tf-idf mit scikit-learn
Neuronales Netzwerk mit Python (Scikit-Learn)
Parallele Verarbeitung mit Parallel von Scikit-Learn
[Python] Lineare Regression mit Scicit-Learn
Robuste lineare Regression mit Scikit-Learn
Rastersuche von Hyperparametern mit Scikit-learn
Erstellen eines bestimmten Baums mit Scikit-Learn
Bildsegmentierung mit Scikit-Image und Scikit-Learn
Identifizieren Sie Ausreißer mit dem Random Forest Classifier von scikit-learn
Laplace-Eigenkarten mit Scikit-Learn (persönliche Notizen)
Nicht negative Matrixfaktorisierung (NMF) mit Scikit-Learn
Scikit-learn DecisionTreeClassifier mit Datetime-Typwerten
Die grundlegendste Clusteranalyse mit Scikit-Learn
Multi-Class Multi-Label-Klassifizierung von Bildern mit Pytorch
[Scikit-learn] Ich habe mit der ROC-Kurve gespielt
Multi-Label-Klassifizierung nach Random Forest mit Scikit-Learn
Clustering repräsentativer Schulen im Sommer 2016 mit Scikit-Learn
Implementieren Sie einen minimalen selbst erstellten Schätzer mit scikit-learn
Füllen Sie fehlende Werte mit Scikit-learn impute aus
Visualisieren Sie den Entscheidungsbaum von Scikit-Learn mit Plotlys Treemap