Wie führen Sie die Vorhersage mit LDA (lineare DISKRIMINANZANALYSE) in scikit-learn?
Habe ich getestet, wie gut PCA und LDA arbeitet für die Klassifizierung von 3 verschiedenen Arten von image-tags möchte ich automatisch zu identifizieren. In meinem code, X ist meine Daten-matrix, wo jede Zeile werden die Pixel aus einem Bild, und y ist ein 1D-array mit Angabe der Klassifikation in jeder Zeile.
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.lda import LDA
pca = PCA(n_components=2)
X_r = pca.fit(X).transform(X)
plt.figure(figsize = (35, 20))
plt.scatter(X_r[:, 0], X_r[:, 1], c=y, s=200)
lda = LDA(n_components=2)
X_lda = lda.fit(X, y).transform(X)
plt.figure(figsize = (35, 20))
plt.scatter(X_lda[:, 0], X_lda[:, 1], c=y, s=200)
Mit der LDA, dass ich am Ende mit 3 deutlich unterscheidbare Cluster mit nur geringfügigen überlappung zwischen Ihnen. Nun, wenn ich ein neues Bild, das ich will, zu klassifizieren, sobald ich es in ein 1D-array, wie kann ich voraussagen, welche cluster es sollte fallen, wenn es fällt zu weit von der Mitte, wie kann ich sagen, dass die Klassifizierung "nicht schlüssig"? Ich war auch neugierig, was der ".transform(X)" - Funktion hat, um meine Daten einmal hatte ich es passt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem Sie trainiert Ihre LDA-Modell mit einigen Daten
X
, möchten Sie vielleicht zu Projekt einige andere DatenZ
. in diesem Fall, was Sie tun sollten, ist:Beachten Sie, dass " fit " wird verwendet für die Montage das Modell, nicht das fitting der Daten.
So
transform
wird verwendet, um die Darstellung (Projektion in diesem Fall), undpredict
verwendet wird, für die Vorhersage der Beschriftung jeder einzelnen Probe. (dies ist für ALLE Klassen erbtBaseEstimator
im sklearn.Lesen Sie die Dokumentation für weitere Optionen und Eigenschaften.
Auch, sklearn API können Sie tun
pca.fit_transform(X)
stattpca.fit(X).transform(X)
. Verwenden Sie diese version, wenn Sie nicht interessiert sind, im Modell selbst, die nach diesem Zeitpunkt in den code.Ein paar Kommentare:
Da die PCA ist ein Unbeaufsichtigt Ansatz, LDA ist ein besserer Ansatz, dies zu tun "visual" - Einstufung, die Sie gerade tun.
Außerdem, Wenn Sie daran interessiert sind, Klassifizierung, können Sie erwägen, verschiedene Typ von Klassifikatoren, die nicht unbedingt LDA, obwohl es ein guter Ansatz für die Visualisierung.
9.81963930e-01=
in google und sehen, was Sie erhalten. Ich hatte auch einen Tippfehler, korrigiert Sie.