NearestNeighbors#
- class sklearn.neighbors.NearestNeighbors(*, n_neighbors=5, radius=1.0, algorithm='auto', leaf_size=30, metric='minkowski', p=2, metric_params=None, n_jobs=None)[Quelle]#
Unüberwachter Lerner zur Implementierung von Nachbarschaftssuchen.
Mehr lesen im Benutzerhandbuch.
Hinzugefügt in Version 0.9.
- Parameter:
- n_neighborsint, Standard=5
Anzahl der standardmäßig für
kneighbors-Abfragen zu verwendenden Nachbarn.- radiusfloat, Standardwert=1.0
Parameterbereich, der standardmäßig für
radius_neighbors-Abfragen verwendet wird.- algorithm{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, Standard=’auto’
Algorithmus zur Berechnung der nächsten Nachbarn
‘ball_tree’ verwendet
BallTree‘kd_tree’ verwendet
KDTree‘brute’ verwendet eine brute-force Suche.
„auto“ versucht, den am besten geeigneten Algorithmus basierend auf den an die
fit-Methode übergebenen Werten zu entscheiden.
Hinweis: Das Anpassen an dünnbesetzte Eingaben überschreibt die Einstellung dieses Parameters und verwendet brute force.
- leaf_sizeint, Standard=30
Anzahl der Blätter, die an BallTree oder KDTree übergeben werden. Dies kann die Geschwindigkeit des Aufbaus und der Abfrage sowie den benötigten Speicherplatz für den Baum beeinflussen. Der optimale Wert hängt von der Art des Problems ab.
- metricstr oder aufrufbar, Standard=’minkowski’
Metrik zur Entfernungsberechnung. Standard ist „minkowski“, was bei p = 2 zur Standard-Euklidischen Distanz führt. Siehe die Dokumentation von scipy.spatial.distance und die unter
distance_metricsaufgeführten Metriken für gültige Metrikwerte.Wenn metric “precomputed” ist, wird davon ausgegangen, dass X eine Distanzmatrix ist und während des Anlernens quadratisch sein muss. X kann ein dünnbesetzter Graph sein, in diesem Fall können nur “nonzero” Elemente als Nachbarn betrachtet werden.
Wenn metric eine aufrufbare Funktion ist, nimmt sie zwei Arrays entgegen, die 1D-Vektoren darstellen, und muss einen Wert zurückgeben, der die Entfernung zwischen diesen Vektoren angibt. Dies funktioniert für Scipys Metriken, ist aber weniger effizient als die Übergabe des Metriknamens als String.
- pfloat (positiv), Standard=2
Parameter für die Minkowski-Metrik von sklearn.metrics.pairwise.pairwise_distances. Wenn p = 1, ist dies äquivalent zur Verwendung der Manhattan-Distanz (l1) und der Euklidischen Distanz (l2) für p = 2. Für ein beliebiges p wird die Minkowski-Distanz (l_p) verwendet.
- metric_paramsdict, Standard=None
Zusätzliche Schlüsselwortargumente für die Metrikfunktion.
- n_jobsint, default=None
Die Anzahl der parallelen Jobs für die Nachbarsuche.
Nonebedeutet 1, es sei denn, es befindet sich in einemjoblib.parallel_backendKontext.-1bedeutet, alle Prozessoren zu verwenden. Siehe Glossar für weitere Details.
- Attribute:
- effective_metric_str
Metrik zur Berechnung von Distanzen zu Nachbarn.
- effective_metric_params_dict
Parameter für die Metrik, die zur Berechnung von Distanzen zu Nachbarn verwendet wird.
- n_features_in_int
Anzahl der während des fits gesehenen Merkmale.
Hinzugefügt in Version 0.24.
- 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.
- n_samples_fit_int
Anzahl der Samples in den angepassten Daten.
Siehe auch
KNeighborsClassifierKlassifikator, der die k-nächste-Nachbarn-Abstimmung implementiert.
RadiusNeighborsClassifierKlassifikator, der eine Abstimmung unter Nachbarn innerhalb eines gegebenen Radius implementiert.
KNeighborsRegressorRegression basierend auf k-nächsten Nachbarn.
RadiusNeighborsRegressorRegression basierend auf Nachbarn innerhalb eines festen Radius.
BallTreeRaumpartitionierungsdatenstruktur zur Organisation von Punkten in einem mehrdimensionalen Raum, die für die Suche nach nächsten Nachbarn verwendet wird.
Anmerkungen
Siehe Nearest Neighbors in der Online-Dokumentation für eine Diskussion der Wahl von
algorithmundleaf_size.https://de.wikipedia.org/wiki/k-N%C3%A4chste-Nachbarn-Algorithmus
Beispiele
>>> import numpy as np >>> from sklearn.neighbors import NearestNeighbors >>> samples = [[0, 0, 2], [1, 0, 0], [0, 0, 1]] >>> neigh = NearestNeighbors(n_neighbors=2, radius=0.4) >>> neigh.fit(samples) NearestNeighbors(...) >>> neigh.kneighbors([[0, 0, 1.3]], 2, return_distance=False) array([[2, 0]]...) >>> nbrs = neigh.radius_neighbors( ... [[0, 0, 1.3]], 0.4, return_distance=False ... ) >>> np.asarray(nbrs[0][0]) array(2)
- fit(X, y=None)[Quelle]#
Trainiert den Nearest Neighbors-Estimator aus dem Trainingsdatensatz.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features) oder (n_samples, n_samples), wenn metric=’precomputed’
Trainingsdaten.
- yIgnoriert
Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.
- Gibt zurück:
- selfNearestNeighbors
Der trainierte Nearest Neighbors-Estimator.
- 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.
- kneighbors(X=None, n_neighbors=None, return_distance=True)[Quelle]#
Finde die K-Nachbarn eines Punktes.
Gibt Indizes von und Entfernungen zu den Nachbarn jedes Punktes zurück.
- Parameter:
- X{array-like, sparse matrix}, Form (n_queries, n_features) oder (n_queries, n_indexed), wenn metric == ‘precomputed’, Standard=None
Der Anfragepunkt oder die Anfragepunkte. Wenn nicht angegeben, werden die Nachbarn jedes indizierten Punktes zurückgegeben. In diesem Fall wird der Anfragepunkt nicht als sein eigener Nachbar betrachtet.
- n_neighborsint, Standard=None
Anzahl der für jede Stichprobe erforderlichen Nachbarn. Der Standardwert ist der Wert, der an den Konstruktor übergeben wurde.
- return_distancebool, Standard=True
Gibt zurück, ob die Entfernungen zurückgegeben werden sollen.
- Gibt zurück:
- neigh_distndarray der Form (n_queries, n_neighbors)
Array, das die Längen zu den Punkten darstellt, nur vorhanden, wenn return_distance=True.
- neigh_indndarray der Form (n_queries, n_neighbors)
Indizes der nächsten Punkte in der Populationsmatrix.
Beispiele
Im folgenden Beispiel konstruieren wir eine NearestNeighbors-Klasse aus einem Array, das unser Datensatz repräsentiert, und fragen, wer der nächste Punkt zu [1,1,1] ist.
>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(n_neighbors=1) >>> neigh.fit(samples) NearestNeighbors(n_neighbors=1) >>> print(neigh.kneighbors([[1., 1., 1.]])) (array([[0.5]]), array([[2]]))
Wie Sie sehen können, gibt es [[0.5]] und [[2]] zurück, was bedeutet, dass das Element in der Entfernung 0.5 liegt und das dritte Element von samples ist (Indizes beginnen bei 0). Sie können auch mehrere Punkte abfragen.
>>> X = [[0., 1., 0.], [1., 0., 1.]] >>> neigh.kneighbors(X, return_distance=False) array([[1], [2]]...)
- kneighbors_graph(X=None, n_neighbors=None, mode='connectivity')[Quelle]#
Berechnet den (gewichteten) Graphen von k-Nachbarn für Punkte in X.
- Parameter:
- X{array-like, sparse matrix} der Form (n_queries, n_features) oder (n_queries, n_indexed), wenn metric == ‘precomputed’, Standard=None
Der Anfragepunkt oder die Anfragepunkte. Wenn nicht angegeben, werden die Nachbarn jedes indizierten Punktes zurückgegeben. In diesem Fall wird der Anfragepunkt nicht als sein eigener Nachbar betrachtet. Für
metric='precomputed'sollte die Form (n_queries, n_indexed) sein. Andernfalls sollte die Form (n_queries, n_features) sein.- n_neighborsint, Standard=None
Anzahl der Nachbarn für jede Stichprobe. Der Standardwert ist der Wert, der an den Konstruktor übergeben wurde.
- mode{‘connectivity’, ‘distance’}, Standard=’connectivity’
Typ der zurückgegebenen Matrix: ‘connectivity’ gibt die Konnektivitätsmatrix mit Einsen und Nullen zurück, bei ‘distance’ sind die Kanten die Entfernungen zwischen den Punkten; die Art der Distanz hängt vom ausgewählten Metrikparameter in der NearestNeighbors-Klasse ab.
- Gibt zurück:
- Asparse-matrix der Form (n_queries, n_samples_fit)
n_samples_fitist die Anzahl der Samples in den angepassten Daten.A[i, j]gibt das Gewicht der Kante an, dieimitjverbindet. Die Matrix hat das CSR-Format.
Siehe auch
NearestNeighbors.radius_neighbors_graphBerechnet den (gewichteten) Graphen von Nachbarn für Punkte in X.
Beispiele
>>> X = [[0], [3], [1]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(n_neighbors=2) >>> neigh.fit(X) NearestNeighbors(n_neighbors=2) >>> A = neigh.kneighbors_graph(X) >>> A.toarray() array([[1., 0., 1.], [0., 1., 1.], [1., 0., 1.]])
- radius_neighbors(X=None, radius=None, return_distance=True, sort_results=False)[Quelle]#
Findet die Nachbarn innerhalb eines gegebenen Radius eines oder mehrerer Punkte.
Gibt die Indizes und Entfernungen jedes Punktes aus dem Datensatz zurück, der sich in einer Kugel mit der Größe
radiusum die Punkte des Abfrage-Arrays befindet. Punkte, die auf der Grenze liegen, werden in die Ergebnisse aufgenommen.Die Ergebnis-Punkte sind *nicht* notwendigerweise nach der Entfernung zu ihrem Abfragepunkt sortiert.
- Parameter:
- X{array-like, sparse matrix} von (n_samples, n_features), Standardwert=None
Der Anfragepunkt oder die Anfragepunkte. Wenn nicht angegeben, werden die Nachbarn jedes indizierten Punktes zurückgegeben. In diesem Fall wird der Anfragepunkt nicht als sein eigener Nachbar betrachtet.
- radiusfloat, Standardwert=None
Begrenzungsradius der zurückzugebenden Nachbarn. Der Standardwert ist der Wert, der an den Konstruktor übergeben wurde.
- return_distancebool, Standard=True
Gibt zurück, ob die Entfernungen zurückgegeben werden sollen.
- sort_resultsbool, Standardwert=False
Wenn True, werden die Entfernungen und Indizes vor der Rückgabe nach aufsteigenden Entfernungen sortiert. Wenn False, sind die Ergebnisse möglicherweise nicht sortiert. Wenn
return_distance=Falsegesetzt ist, führt die Einstellung vonsort_results=Truezu einem Fehler.Hinzugefügt in Version 0.22.
- Gibt zurück:
- neigh_distndarray von shape (n_samples,) von Arrays
Array, das die Entfernungen zu jedem Punkt darstellt, nur vorhanden, wenn
return_distance=Trueist. Die Entfernungs-Werte werden gemäß dem Konstruktorparametermetricberechnet.- neigh_indndarray von shape (n_samples,) von Arrays
Ein Array von Arrays von Indizes der ungefähren nächsten Punkte aus der Populationsmatrix, die sich innerhalb einer Kugel der Größe
radiusum die Abfragepunkte befinden.
Anmerkungen
Da die Anzahl der Nachbarn jedes Punktes nicht notwendigerweise gleich ist, können die Ergebnisse für mehrere Abfragepunkte nicht in einem Standard-Datenarray untergebracht werden. Aus Effizienzgründen gibt
radius_neighborsArrays von Objekten zurück, wobei jedes Objekt ein 1D-Array von Indizes oder Entfernungen ist.Beispiele
Im folgenden Beispiel konstruieren wir eine NeighborsClassifier-Klasse aus einem Array, das unseren Datensatz repräsentiert, und fragen, welcher Punkt [1, 1, 1] am nächsten liegt
>>> import numpy as np >>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(radius=1.6) >>> neigh.fit(samples) NearestNeighbors(radius=1.6) >>> rng = neigh.radius_neighbors([[1., 1., 1.]]) >>> print(np.asarray(rng[0][0])) [1.5 0.5] >>> print(np.asarray(rng[1][0])) [1 2]
Das erste zurückgegebene Array enthält die Entfernungen zu allen Punkten, die näher als 1,6 sind, während das zweite zurückgegebene Array deren Indizes enthält. Im Allgemeinen können mehrere Punkte gleichzeitig abgefragt werden.
- radius_neighbors_graph(X=None, radius=None, mode='connectivity', sort_results=False)[Quelle]#
Berechnet den (gewichteten) Graphen von Nachbarn für Punkte in X.
Nachbarschaften werden auf die Punkte mit einer Entfernung kleiner als radius beschränkt.
- Parameter:
- X{array-like, sparse matrix} von shape (n_samples, n_features), Standardwert=None
Der Anfragepunkt oder die Anfragepunkte. Wenn nicht angegeben, werden die Nachbarn jedes indizierten Punktes zurückgegeben. In diesem Fall wird der Anfragepunkt nicht als sein eigener Nachbar betrachtet.
- radiusfloat, Standardwert=None
Radius der Nachbarschaften. Der Standardwert ist der Wert, der an den Konstruktor übergeben wurde.
- mode{‘connectivity’, ‘distance’}, Standard=’connectivity’
Typ der zurückgegebenen Matrix: ‘connectivity’ gibt die Konnektivitätsmatrix mit Einsen und Nullen zurück, bei ‘distance’ sind die Kanten die Entfernungen zwischen den Punkten; die Art der Distanz hängt vom ausgewählten Metrikparameter in der NearestNeighbors-Klasse ab.
- sort_resultsbool, Standardwert=False
Wenn True, werden in jeder Zeile des Ergebnisses die Nicht-Null-Einträge nach aufsteigenden Entfernungen sortiert. Wenn False, sind die Nicht-Null-Einträge möglicherweise nicht sortiert. Nur verwendet mit mode=’distance’.
Hinzugefügt in Version 0.22.
- Gibt zurück:
- Asparse-matrix der Form (n_queries, n_samples_fit)
n_samples_fitist die Anzahl der Samples in den angepassten Daten.A[i, j]gibt das Gewicht der Kante an, dieimitjverbindet. Die Matrix hat das CSR-Format.
Siehe auch
kneighbors_graphBerechnet den (gewichteten) Graphen von k-Nachbarn für Punkte in X.
Beispiele
>>> X = [[0], [3], [1]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(radius=1.5) >>> neigh.fit(X) NearestNeighbors(radius=1.5) >>> A = neigh.radius_neighbors_graph(X) >>> A.toarray() array([[1., 0., 1.], [0., 1., 0.], [1., 0., 1.]])
- 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.