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)


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow