scikit-learn
Einstufung
Suche…
Verwenden von Support Vector Machines
Support-Vektor-Maschinen sind eine Familie von Algorithmen, die versuchen, eine (möglicherweise hochdimensionale) Hyperebene zwischen zwei markierten Punktesätzen zu übergeben, so dass der Abstand der Punkte von der Ebene in gewissem Sinne optimal ist. SVMs können für die Klassifizierung oder Regression verwendet werden (entsprechend sklearn.svm.SVC
bzw. sklearn.svm.SVR
).
Beispiel:
Angenommen, wir arbeiten in einem 2D-Raum. Zuerst erstellen wir einige Daten:
import numpy as np
Jetzt erstellen wir x und y :
x0, x1 = np.random.randn(10, 2), np.random.randn(10, 2) + (1, 1)
x = np.vstack((x0, x1))
y = [0] * 10 + [1] * 10
Beachten Sie, dass x aus zwei Gaussianern besteht: einer um (0, 0) und einer um (1, 1) .
Um einen Klassifikator zu erstellen, können wir Folgendes verwenden:
from sklearn import svm
svm.SVC(kernel='linear').fit(x, y)
Sehen wir uns die Vorhersage für (0, 0) an :
>>> svm.SVC(kernel='linear').fit(x, y).predict([[0, 0]])
array([0])
Die Vorhersage lautet, dass die Klasse 0 ist.
Für die Regression können wir auf ähnliche Weise tun:
svm.SVR(kernel='linear').fit(x, y)
RandomForestClassifier
Eine zufällige Gesamtstruktur ist ein Metaschätzer, der eine Reihe von Entscheidungsbaumklassifizierern auf verschiedene Unterabtastungen des Datensatzes anpasst und die Mittelwertbildung verwendet, um die Vorhersagegenauigkeit und die Kontrolle der Anpassung zu verbessern.
Ein einfaches Anwendungsbeispiel:
Einführen:
from sklearn.ensemble import RandomForestClassifier
Zugdaten und Zieldaten definieren:
train = [[1,2,3],[2,5,1],[2,1,7]]
target = [0,1,0]
Die Werte in target
für das Label, das Sie vorhersagen möchten.
Initiieren Sie ein RandomForest-Objekt und führen Sie das Learn (Fit) aus:
rf = RandomForestClassifier(n_estimators=100)
rf.fit(train, target)
Vorhersagen:
test = [2,2,3]
predicted = rf.predict(test)
Klassifizierungsberichte analysieren
Erstellen Sie einen Textbericht mit den wichtigsten Klassifizierungsmetriken, einschließlich Genauigkeit und Rückruf , f1-Score ( harmonischer Mittelwert für Genauigkeit und Rückruf) und Unterstützung (Anzahl der Beobachtungen dieser Klasse im Trainingssatz).
Beispiel aus sklearn
docs :
from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))
Ausgabe -
precision recall f1-score support
class 0 0.50 1.00 0.67 1
class 1 0.00 0.00 0.00 1
class 2 1.00 0.67 0.80 3
avg / total 0.70 0.60 0.61 5
GradientBoostingClassifier
Steigungsverstärkung zur Klassifizierung. Der Gradientenverstärkungsklassifizierer ist ein additives Ensemble eines Basismodells, dessen Fehler in aufeinanderfolgenden Iterationen (oder Stufen) durch Hinzufügen von Regressionsbäumen korrigiert werden, die die Residuen korrigieren (den Fehler der vorherigen Stufe).
Einführen:
from sklearn.ensemble import GradientBoostingClassifier
Erstellen Sie einige Spielzeugklassifizierungsdaten
from sklearn.datasets import load_iris
iris_dataset = load_iris()
X, y = iris_dataset.data, iris_dataset.target
Lassen Sie uns diese Daten in Trainings- und Testsets aufteilen.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=0)
Instanziieren Sie ein GradientBoostingClassifier
Modell mit den Standardparametern.
gbc = GradientBoostingClassifier()
gbc.fit(X_train, y_train)
Lassen Sie uns es auf dem Test-Set bewerten
# We are using the default classification accuracy score
>>> gbc.score(X_test, y_test)
1
Standardmäßig sind 100 Schätzer erstellt
>>> gbc.n_estimators
100
Dies kann gesteuert werden, indem n_estimators
während der Initialisierungszeit auf einen anderen Wert gesetzt wird.
Ein Entscheidungsbaum
Ein Entscheidungsbaum ist ein Klassifizierer, der eine Folge von ausführlichen Regeln (wie a> 7) verwendet, die leicht verständlich sind.
Das folgende Beispiel trainiert einen Entscheidungsbaum-Klassifizierer unter Verwendung von drei Merkmalsvektoren der Länge 3 und sagt dann das Ergebnis für einen bislang unbekannten vierten Merkmalsvektor, den sogenannten Testvektor, voraus.
from sklearn.tree import DecisionTreeClassifier
# Define training and target set for the classifier
train = [[1,2,3],[2,5,1],[2,1,7]]
target = [10,20,30]
# Initialize Classifier.
# Random values are initialized with always the same random seed of value 0
# (allows reproducible results)
dectree = DecisionTreeClassifier(random_state=0)
dectree.fit(train, target)
# Test classifier with other, unknown feature vector
test = [2,2,3]
predicted = dectree.predict(test)
print predicted
Ausgabe kann visualisiert werden mit:
import pydot
import StringIO
dotfile = StringIO.StringIO()
tree.export_graphviz(dectree, out_file=dotfile)
(graph,)=pydot.graph_from_dot_data(dotfile.getvalue())
graph.write_png("dtree.png")
graph.write_pdf("dtree.pdf")
Klassifizierung mit logistischer Regression
In LR Classifier werden die Wahrscheinlichkeiten, die die möglichen Ergebnisse einer einzelnen Studie beschreiben, mithilfe einer logistischen Funktion modelliert. Es ist in der linear_model
Bibliothek implementiert
from sklearn.linear_model import LogisticRegression
Die Implementierung von sklearn LR kann für die binäre, One-vs-Rest- oder multinomiale logistische Regression mit optionaler L2- oder L1-Regularisierung verwendet werden. Betrachten wir zum Beispiel eine binäre Klassifizierung in einem Beispiel-Sklearn-Dataset
from sklearn.datasets import make_hastie_10_2
X,y = make_hastie_10_2(n_samples=1000)
Dabei ist X ein Array mit n_samples X 10
und y ist die Zielbezeichnung -1 oder +1.
Verwenden Sie den Train-Test-Split, um die Eingabedaten in Trainings- und Testsets aufzuteilen (70% -30%).
from sklearn.model_selection import train_test_split
#sklearn.cross_validation in older scikit versions
data_train, data_test, labels_train, labels_test = train_test_split(X,y, test_size=0.3)
Die Verwendung des LR-Klassifikators ähnelt anderen Beispielen
# Initialize Classifier.
LRC = LogisticRegression()
LRC.fit(data_train, labels_train)
# Test classifier with the test data
predicted = LRC.predict(data_test)
Verwende die Verwirrungsmatrix, um die Ergebnisse zu visualisieren
from sklearn.metrics import confusion_matrix
confusion_matrix(predicted, labels_test)