KNeighborsTransformer#

class sklearn.neighbors.KNeighborsTransformer(*, mode='distance', n_neighbors=5, algorithm='auto', leaf_size=30, metric='minkowski', p=2, metric_params=None, n_jobs=None)[Quelle]#

Transformiert X in einen (gewichteten) Graphen von k nächsten Nachbarn.

Die transformierten Daten sind ein dünnbesetzter Graph, wie er von kneighbors_graph zurückgegeben wird.

Mehr dazu im Benutzerhandbuch.

Hinzugefügt in Version 0.22.

Parameter:
mode{‘distance’, ‘connectivity’}, Standard=‘distance’

Typ der zurückgegebenen Matrix: ‘connectivity’ gibt die Konnektivitätsmatrix mit Einsen und Nullen zurück, und ‘distance’ gibt die Entfernungen zwischen Nachbarn gemäß der angegebenen Metrik zurück.

n_neighborsint, Standard=5

Anzahl der Nachbarn für jede Stichprobe im transformierten dünnbesetzten Graphen. Aus Kompatibilitätsgründen wird, da jede Stichprobe als ihr eigener Nachbar betrachtet wird, ein zusätzlicher Nachbar berechnet, wenn mode == ‘distance’. In diesem Fall enthält der dünnbesetzte Graph (n_neighbors + 1) Nachbarn.

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 Werten zu entscheiden, die an die Methode fit übergeben werden.

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_metrics aufgeführten Metriken für gültige Metrikwerte.

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.

Distanzmatrizen werden nicht unterstützt.

pfloat, Standard=2

Parameter für die Minkowski-Metrik von sklearn.metrics.pairwise.pairwise_distances. Wenn p = 1, ist dies äquivalent zur Verwendung von manhattan_distance (l1) und euclidean_distance (l2) für p = 2. Für beliebiges p wird minkowski_distance (l_p) verwendet. Dieser Parameter sollte positiv sein.

metric_paramsdict, Standard=None

Zusätzliche Schlüsselwortargumente für die Metrikfunktion.

n_jobsint, default=None

Die Anzahl der parallelen Jobs, die für die Nachbarschaftssuche ausgeführt werden. Wenn -1, dann wird die Anzahl der Jobs auf die Anzahl der CPU-Kerne gesetzt.

Attribute:
effective_metric_str oder callable

Die verwendete Distanzmetrik. Sie ist identisch mit dem Parameter metric oder ein Synonym davon, z. B. ‘euclidean’, wenn der Parameter metric auf ‘minkowski’ und der Parameter p auf 2 gesetzt ist.

effective_metric_params_dict

Zusätzliche Schlüsselwortargumente für die Metrikfunktion. Für die meisten Metriken ist dies dasselbe wie der Parameter metric_params, kann aber auch den Wert des Parameters p enthalten, wenn das Attribut effective_metric_ auf ‘minkowski’ gesetzt ist.

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 X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

n_samples_fit_int

Anzahl der Samples in den angepassten Daten.

Siehe auch

kneighbors_graph

Berechnet den gewichteten Graphen von k-Nachbarn für Punkte in X.

RadiusNeighborsTransformer

Transformiert X in einen gewichteten Graphen von Nachbarn, die näher als ein Radius sind.

Anmerkungen

Ein Beispiel für die Verwendung von KNeighborsTransformer in Kombination mit TSNE finden Sie unter Approximate nearest neighbors in TSNE.

Beispiele

>>> from sklearn.datasets import load_wine
>>> from sklearn.neighbors import KNeighborsTransformer
>>> X, _ = load_wine(return_X_y=True)
>>> X.shape
(178, 13)
>>> transformer = KNeighborsTransformer(n_neighbors=5, mode='distance')
>>> X_dist_graph = transformer.fit_transform(X)
>>> X_dist_graph.shape
(178, 178)
fit(X, y=None)[Quelle]#

Passt den k-Nearest-Neighbors-Transformer aus dem Trainingsdatensatz an.

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:
selfKNeighborsTransformer

Der angepasste k-Nearest-Neighbors-Transformer.

fit_transform(X, y=None)[Quelle]#

An Daten anpassen, dann transformieren.

Passt den Transformer an X und y mit optionalen Parametern fit_params an und gibt eine transformierte Version von X zurück.

Parameter:
Xarray-like der Form (n_samples, n_features)

Trainingsmenge.

yIgnoriert

Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.

Gibt zurück:
Xtdünnbesetzte Matrix der Form (n_samples, n_samples)

Xt[i, j] wird das Gewicht der Kante zugewiesen, die i mit j verbindet. Nur die Nachbarn haben einen expliziten Wert. Die Diagonale ist immer explizit. Die Matrix ist im CSR-Format.

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 fit gesehenen 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.

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_fit ist die Anzahl der Samples in den angepassten Daten. A[i, j] gibt das Gewicht der Kante an, die i mit j verbindet. Die Matrix hat das CSR-Format.

Siehe auch

NearestNeighbors.radius_neighbors_graph

Berechnet 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.]])
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 transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

  • None: 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]#

Berechnet den (gewichteten) Graphen von Nachbarn für Punkte in X.

Parameter:
Xarray-ähnlich der Form (n_samples_transform, n_features)

Stichproben-Daten.

Gibt zurück:
Xtdünnbesetzte Matrix der Form (n_samples_transform, n_samples_fit)

Xt[i, j] wird das Gewicht der Kante zugewiesen, die i mit j verbindet. Nur die Nachbarn haben einen expliziten Wert. Die Diagonale ist immer explizit. Die Matrix ist im CSR-Format.