NeighborhoodComponentsAnalysis#
- class sklearn.neighbors.NeighborhoodComponentsAnalysis(n_components=None, *, init='auto', warm_start=False, max_iter=50, tol=1e-05, callback=None, verbose=0, random_state=None)[Quelle]#
Neighborhood Components Analysis.
Neighborhood Component Analysis (NCA) ist ein Machine-Learning-Algorithmus für Metrik-Lernen. Er lernt eine lineare Transformation auf überwachte Weise, um die Klassifizierungsgenauigkeit einer stochastischen Regel für nächste Nachbarn im transformierten Raum zu verbessern.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- n_componentsint, default=None
Bevorzugte Dimensionalität des projizierten Raums. Wenn None, wird sie auf
n_featuresgesetzt.- init{‘auto’, ‘pca’, ‘lda’, ‘identity’, ‘random’} oder ndarray der Form (n_features_a, n_features_b), default=’auto’
Initialisierung der linearen Transformation. Mögliche Optionen sind
'auto','pca','lda','identity','random'und ein numpy-Array der Form(n_features_a, n_features_b).'auto'Abhängig von
n_componentswird die sinnvollste Initialisierung gewählt. Wennn_components <= min(n_features, n_classes - 1)verwenden wir'lda', da es Label-Informationen verwendet. Wenn nicht, abern_components < min(n_features, n_samples), verwenden wir'pca', da es Daten in bedeutungsvollen Richtungen projiziert (die mit höherer Varianz). Andernfalls verwenden wir einfach'identity'.
'lda'min(n_components, n_classes)diskriminativste Komponenten der anfitübergebenen Eingaben werden zur Initialisierung der Transformation verwendet. (Wennn_components > n_classes, sind die restlichen Komponenten Null.) (SieheLinearDiscriminantAnalysis)
'identity'Wenn
n_componentsstrikt kleiner ist als die Dimensionalität der anfitübergebenen Eingaben, wird die Identitätsmatrix auf die erstenn_componentsZeilen gekürzt.
'random'Die anfängliche Transformation ist ein Zufallsarray der Form
(n_components, n_features). Jeder Wert wird aus der Standard-Normalverteilung gezogen.
- numpy array
n_features_bmuss mit der Dimensionalität der anfitübergebenen Eingaben übereinstimmen, und n_features_a muss kleiner oder gleich dieser sein. Wennn_componentsnichtNoneist, mussn_features_adamit übereinstimmen.
- warm_startbool, Standard=False
Wenn
Trueundfitzuvor aufgerufen wurde, wird die Lösung des vorherigen Aufrufs vonfitals anfängliche lineare Transformation verwendet (n_componentsundinitwerden ignoriert).- max_iterint, default=50
Maximale Anzahl von Iterationen bei der Optimierung.
- tolfloat, default=1e-5
Konvergenztoleranz für die Optimierung.
- callbackcallable, default=None
Wenn nicht
None, wird diese Funktion nach jeder Iteration des Optimierers aufgerufen und erhält als Argumente die aktuelle Lösung (flache Transformationsmatrix) und die Anzahl der Iterationen. Dies kann nützlich sein, wenn man die nach jeder Iteration gefundene Transformation untersuchen oder speichern möchte.- verboseint, default=0
Wenn 0, werden keine Fortschrittsmeldungen ausgegeben. Wenn 1, werden Fortschrittsmeldungen an stdout ausgegeben. Wenn > 1, werden Fortschrittsmeldungen ausgegeben und der
disp-Parameter vonscipy.optimize.minimizewird aufverbose - 2gesetzt.- random_stateint oder numpy.RandomState, default=None
Ein Pseudo-Zufallszahlengeneratorobjekt oder ein Seed dafür, wenn int. Wenn
init='random', wirdrandom_statezur Initialisierung der Zufallstransformation verwendet. Wenninit='pca', wirdrandom_stateals Argument an PCA bei der Initialisierung der Transformation übergeben. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.
- Attribute:
- components_ndarray der Form (n_components, n_features)
Die während des Fits gelernte lineare Transformation.
- n_features_in_int
Anzahl der während des fits gesehenen Merkmale.
Hinzugefügt in Version 0.24.
- n_iter_int
Zählt die Anzahl der vom Optimierer durchgeführten Iterationen.
- random_state_numpy.RandomState
Pseudo-Zufallszahlengeneratorobjekt, das während der Initialisierung verwendet wird.
- feature_names_in_ndarray mit Form (
n_features_in_,) Namen der während fit gesehenen Merkmale. Nur definiert, wenn
XMerkmalnamen hat, die alle Zeichenketten sind.Hinzugefügt in Version 1.0.
Siehe auch
sklearn.discriminant_analysis.LinearDiscriminantAnalysisLineare Diskriminanzanalyse.
sklearn.decomposition.PCAHauptkomponentenanalyse (PCA).
Referenzen
[1]J. Goldberger, G. Hinton, S. Roweis, R. Salakhutdinov. „Neighbourhood Components Analysis“. Advances in Neural Information Processing Systems. 17, 513-520, 2005. https://www.cs.toronto.edu/~rsalakhu/papers/ncanips.pdf
[2]Wikipedia-Eintrag zu Neighborhood Components Analysis https://en.wikipedia.org/wiki/Neighbourhood_components_analysis
Beispiele
>>> from sklearn.neighbors import NeighborhoodComponentsAnalysis >>> from sklearn.neighbors import KNeighborsClassifier >>> from sklearn.datasets import load_iris >>> from sklearn.model_selection import train_test_split >>> X, y = load_iris(return_X_y=True) >>> X_train, X_test, y_train, y_test = train_test_split(X, y, ... stratify=y, test_size=0.7, random_state=42) >>> nca = NeighborhoodComponentsAnalysis(random_state=42) >>> nca.fit(X_train, y_train) NeighborhoodComponentsAnalysis(...) >>> knn = KNeighborsClassifier(n_neighbors=3) >>> knn.fit(X_train, y_train) KNeighborsClassifier(...) >>> print(knn.score(X_test, y_test)) 0.933333... >>> knn.fit(nca.transform(X_train), y_train) KNeighborsClassifier(...) >>> print(knn.score(nca.transform(X_test), y_test)) 0.961904...
- fit(X, y)[Quelle]#
Trainiert das Modell anhand der gegebenen Trainingsdaten.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Die Trainingsbeispiele.
- yarray-like von Form (n_samples,)
Die entsprechenden Trainingslabels.
- Gibt zurück:
- selfobject
Angepasster Schätzer.
- fit_transform(X, y=None, **fit_params)[Quelle]#
An Daten anpassen, dann transformieren.
Passt den Transformer an
Xundymit optionalen Parameternfit_paramsan und gibt eine transformierte Version vonXzurück.- Parameter:
- Xarray-like der Form (n_samples, n_features)
Eingabestichproben.
- yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None
Zielwerte (None für unüberwachte Transformationen).
- **fit_paramsdict
Zusätzliche Fit-Parameter. Nur übergeben, wenn der Estimator zusätzliche Parameter in seiner
fit-Methode akzeptiert.
- Gibt zurück:
- X_newndarray array der Form (n_samples, n_features_new)
Transformiertes Array.
- get_feature_names_out(input_features=None)[Quelle]#
Holt die Ausgabemerkmale für die Transformation.
Die Feature-Namen werden mit dem kleingeschriebenen Klassennamen präfixiert. Wenn der Transformer z.B. 3 Features ausgibt, dann sind die Feature-Namen:
["klassenname0", "klassenname1", "klassenname2"].- Parameter:
- input_featuresarray-like von str oder None, default=None
Wird nur verwendet, um die Feature-Namen mit den in
fitgesehenen Namen zu validieren.
- Gibt zurück:
- feature_names_outndarray von str-Objekten
Transformierte Merkmalnamen.
- get_metadata_routing()[Quelle]#
Holt das Metadaten-Routing dieses Objekts.
Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.
- Gibt zurück:
- routingMetadataRequest
Ein
MetadataRequest, der Routing-Informationen kapselt.
- get_params(deep=True)[Quelle]#
Holt Parameter für diesen Schätzer.
- Parameter:
- deepbool, default=True
Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.
- Gibt zurück:
- paramsdict
Parameternamen, zugeordnet ihren Werten.
- set_output(*, transform=None)[Quelle]#
Ausgabecontainer festlegen.
Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.
- Parameter:
- transform{“default”, “pandas”, “polars”}, default=None
Konfiguriert die Ausgabe von
transformundfit_transform."default": Standardausgabeformat eines Transformers"pandas": DataFrame-Ausgabe"polars": Polars-AusgabeNone: Die Transformationskonfiguration bleibt unverändert
Hinzugefügt in Version 1.4: Die Option
"polars"wurde hinzugefügt.
- Gibt zurück:
- selfestimator instance
Schätzer-Instanz.
- set_params(**params)[Quelle]#
Setzt die Parameter dieses Schätzers.
Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie
Pipeline). Letztere haben Parameter der Form<component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.- Parameter:
- **paramsdict
Schätzer-Parameter.
- Gibt zurück:
- selfestimator instance
Schätzer-Instanz.
- transform(X)[Quelle]#
Wendet die gelernte Transformation auf die gegebenen Daten an.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Datenproben.
- Gibt zurück:
- X_embedded: ndarray der Form (n_samples, n_components)
Die transformierten Datenproben.
- Löst aus:
- NotFittedError
Wenn
fitzuvor nicht aufgerufen wurde.
Galeriebeispiele#
Manifold Learning auf handschriftlichen Ziffern: Locally Linear Embedding, Isomap…
Vergleich von Nächsten Nachbarn mit und ohne Neighborhood Components Analysis
Dimensionsreduktion mit Neighborhood Components Analysis