KDTree#
- class sklearn.neighbors.KDTree#
KDTree für schnelle verallgemeinerte N-Punkt-Probleme.
Mehr lesen im Benutzerhandbuch.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
n_samples ist die Anzahl der Punkte im Datensatz und n_features ist die Dimension des Parameterraums. Hinweis: Wenn X ein C-kontinuierliches Array von Doubles ist, werden die Daten nicht kopiert. Andernfalls wird eine interne Kopie erstellt.
- leaf_sizepositive ganze Zahl, Standard=40
Anzahl der Punkte, bei der auf Brute-Force umgeschaltet wird. Das Ändern von leaf_size hat keinen Einfluss auf die Ergebnisse einer Abfrage, kann aber die Geschwindigkeit einer Abfrage und den für die Speicherung des konstruierten Baums erforderlichen Speicher erheblich beeinflussen. Der Speicherbedarf für den Baum skaliert ungefähr mit n_samples / leaf_size. Für eine angegebene
leaf_sizewird garantiert, dass ein Blattknotenleaf_size <= n_points <= 2 * leaf_sizeerfüllt, außer in dem Fall, dassn_samples < leaf_size.- metricString oder DistanceMetric64-Objekt, Standard='minkowski'
Metrik zur Verwendung für die Distanzberechnung. Standard ist "minkowski", was bei p = 2 die Standard-Euklidische Distanz ergibt. Eine Liste gültiger Metriken für KDTree ist unter dem Attribut
valid_metricsaufgeführt. Weitere Informationen zu jeder Distanzmetrik finden Sie in der Dokumentation von scipy.spatial.distance und den unterdistance_metricsaufgeführten Metriken.- Zusätzliche Schlüsselwörter werden an die Distanzmetrikklasse übergeben.
- Hinweis: Aufrufbare Funktionen im Metrikparameter werden NICHT unterstützt für KDTree
- und Ball Tree. Der Overhead für Funktionsaufrufe führt zu sehr schlechter Leistung.
- Attribute:
- dataSpeicheransicht
Die Trainingsdaten
- valid_metrics: Liste von Strings
Liste der gültigen Distanzmetriken.
Beispiele
Abfrage für k-nächste Nachbarn
>>> import numpy as np >>> from sklearn.neighbors import KDTree >>> rng = np.random.RandomState(0) >>> X = rng.random_sample((10, 3)) # 10 points in 3 dimensions >>> tree = KDTree(X, leaf_size=2) >>> dist, ind = tree.query(X[:1], k=3) >>> print(ind) # indices of 3 closest neighbors [0 3 1] >>> print(dist) # distances to 3 closest neighbors [ 0. 0.19662693 0.29473397]
Sichern und Wiederherstellen eines Baums per Pickle. Beachten Sie, dass der Zustand des Baums beim Sichern im Pickle-Vorgang gespeichert wird: Der Baum muss beim Wiederherstellen nicht neu aufgebaut werden.
>>> import numpy as np >>> import pickle >>> rng = np.random.RandomState(0) >>> X = rng.random_sample((10, 3)) # 10 points in 3 dimensions >>> tree = KDTree(X, leaf_size=2) >>> s = pickle.dumps(tree) >>> tree_copy = pickle.loads(s) >>> dist, ind = tree_copy.query(X[:1], k=3) >>> print(ind) # indices of 3 closest neighbors [0 3 1] >>> print(dist) # distances to 3 closest neighbors [ 0. 0.19662693 0.29473397]
Abfrage für Nachbarn innerhalb eines bestimmten Radius
>>> import numpy as np >>> rng = np.random.RandomState(0) >>> X = rng.random_sample((10, 3)) # 10 points in 3 dimensions >>> tree = KDTree(X, leaf_size=2) >>> print(tree.query_radius(X[:1], r=0.3, count_only=True)) 3 >>> ind = tree.query_radius(X[:1], r=0.3) >>> print(ind) # indices of neighbors within distance 0.3 [3 0 1]
Berechnung einer Gaußschen Kerndichteschätzung
>>> import numpy as np >>> rng = np.random.RandomState(42) >>> X = rng.random_sample((100, 3)) >>> tree = KDTree(X) >>> tree.kernel_density(X[:3], h=0.1, kernel='gaussian') array([ 6.94114649, 7.83281226, 7.2071716 ])
Berechnung einer Zwei-Punkt-Autokorrelationsfunktion
>>> import numpy as np >>> rng = np.random.RandomState(0) >>> X = rng.random_sample((30, 3)) >>> r = np.linspace(0, 1, 5) >>> tree = KDTree(X) >>> tree.two_point_correlation(X, r) array([ 30, 62, 278, 580, 820])
- get_arrays()#
Daten- und Knoten-Arrays abrufen.
- Gibt zurück:
- arrays: Tupel von Arrays
Arrays zur Speicherung von Baumdaten, Index, Knotendaten und Knotenbegrenzungen.
- get_n_calls()#
Anzahl der Aufrufe abrufen.
- Gibt zurück:
- n_calls: ganze Zahl
Anzahl der Distanzberechnungsaufrufe
- get_tree_stats()#
Baumstatus abrufen.
- Gibt zurück:
- tree_stats: Tupel von ganzen Zahlen
(Anzahl der Trimmungen, Anzahl der Blätter, Anzahl der Teilungen)
- kernel_density(X, h, kernel='gaussian', atol=0, rtol=1E-8, breadth_first=True, return_log=False)#
Berechnet die Kerndichteschätzung an den Punkten X mit dem angegebenen Kernel unter Verwendung der beim Erstellen des Baums angegebenen Distanzmetrik.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Ein Array von Punkten zur Abfrage. Die letzte Dimension sollte mit der Dimension der Trainingsdaten übereinstimmen.
- hFloat
die Bandbreite des Kernels
- kernelString, Standard="gaussian"
Geben Sie den zu verwendenden Kernel an. Optionen sind - 'gaussian' - 'tophat' - 'epanechnikov' - 'exponential' - 'linear' - 'cosine' Standard ist kernel = 'gaussian'
- atolFloat, Standard=0
Geben Sie die gewünschte absolute Toleranz des Ergebnisses an. Wenn das wahre Ergebnis
K_trueist, dann erfüllt das zurückgegebene ErgebnisK_retdie Bedingungabs(K_true - K_ret) < atol + rtol * K_ret. Der Standardwert ist null (d.h. Maschinengenauigkeit).- rtolFloat, Standard=1e-8
Geben Sie die gewünschte relative Toleranz des Ergebnisses an. Wenn das wahre Ergebnis
K_trueist, dann erfüllt das zurückgegebene ErgebnisK_retdie Bedingungabs(K_true - K_ret) < atol + rtol * K_ret. Der Standardwert ist1e-8(d.h. Maschinengenauigkeit).- breadth_firstBool, Standard=False
Wenn True, wird eine Breitensuche verwendet. Wenn False (Standard), wird eine Tiefensuche verwendet. Breitensuche ist im Allgemeinen schneller für kompakte Kerne und/oder hohe Toleranzen.
- return_logBool, Standard=False
Gibt den Logarithmus des Ergebnisses zurück. Dies kann für schmale Kerne genauer sein als die Rückgabe des Ergebnisses selbst.
- Gibt zurück:
- densityArray der Form X.shape[:-1]
Das Array der (Logarithmus)-Dichtewertungen
- query(X, k=1, return_distance=True, dualtree=False, breadth_first=False)#
Fragt den Baum nach den k nächsten Nachbarn ab
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Ein Array von Punkten zur Abfrage
- kGanze Zahl, Standard=1
Die Anzahl der zurückzugebenden nächsten Nachbarn
- return_distancebool, Standard=True
Wenn True, wird ein Tupel (d, i) aus Distanzen und Indizes zurückgegeben; wenn False, wird das Array i zurückgegeben
- dualtreeBool, Standard=False
Wenn True, wird der Dual-Tree-Formalismus für die Abfrage verwendet: Ein Baum wird für die Abfragepunkte erstellt, und das Baum-Paar wird verwendet, um diesen Raum effizient zu durchsuchen. Dies kann zu einer besseren Leistung führen, wenn die Anzahl der Punkte groß wird.
- breadth_firstBool, Standard=False
Wenn True, werden die Knoten in einer Breitensuche abgefragt. Andernfalls werden die Knoten in einer Tiefensuche abgefragt.
- sort_resultsBool, Standard=True
Wenn True, werden die Distanzen und Indizes jedes Punkts bei der Rückgabe sortiert, so dass die erste Spalte die nächsten Punkte enthält. Andernfalls werden die Nachbarn in beliebiger Reihenfolge zurückgegeben.
- Gibt zurück:
- iwenn return_distance == False
- (d,i)wenn return_distance == True
- dArray der Form X.shape[:-1] + (k,), dtype=double
Jeder Eintrag enthält die Liste der Distanzen zu den Nachbarn des entsprechenden Punkts.
- iArray der Form X.shape[:-1] + (k,), dtype=int
Jeder Eintrag enthält die Liste der Indizes der Nachbarn des entsprechenden Punkts.
- query_radius(X, r, return_distance=False, count_only=False, sort_results=False)#
Fragt den Baum nach Nachbarn innerhalb eines Radius r ab
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Ein Array von Punkten zur Abfrage
- rDistanz, innerhalb derer Nachbarn zurückgegeben werden
r kann ein einzelner Wert oder ein Array von Werten der Form x.shape[:-1] sein, wenn für jeden Punkt unterschiedliche Radien gewünscht werden.
- return_distancebool, default=False
Wenn True, werden die Distanzen zu den Nachbarn jedes Punkts zurückgegeben; wenn False, werden nur die Nachbarn zurückgegeben. Beachten Sie, dass im Gegensatz zur query()-Methode das Einstellen von return_distance=True hier die Rechenzeit erhöht. Nicht alle Distanzen müssen explizit für return_distance=False berechnet werden. Die Ergebnisse werden standardmäßig nicht sortiert: siehe Schlüsselwort
sort_results.- count_onlyBool, Standard=False
Wenn True, wird nur die Anzahl der Punkte innerhalb der Distanz r zurückgegeben; wenn False, werden die Indizes aller Punkte innerhalb der Distanz r zurückgegeben. Wenn return_distance==True ist, führt das Einstellen von count_only=True zu einem Fehler.
- sort_resultsbool, Standardwert=False
Wenn True, werden die Distanzen und Indizes vor der Rückgabe sortiert. Wenn False, werden die Ergebnisse nicht sortiert. Wenn return_distance == False ist, führt das Einstellen von sort_results = True zu einem Fehler.
- Gibt zurück:
- countwenn count_only == True
- indwenn count_only == False und return_distance == False
- (ind, dist)wenn count_only == False und return_distance == True
- countArray der Form X.shape[:-1], dtype=int
Jeder Eintrag gibt die Anzahl der Nachbarn innerhalb einer Distanz r zum entsprechenden Punkt an.
- indArray der Form X.shape[:-1], dtype=object
Jedes Element ist ein numpy-Integer-Array, das die Indizes der Nachbarn des entsprechenden Punkts auflistet. Beachten Sie, dass im Gegensatz zu den Ergebnissen einer k-Nachbarschaftsabfrage die zurückgegebenen Nachbarn standardmäßig nicht nach Distanz sortiert sind.
- distArray der Form X.shape[:-1], dtype=object
Jedes Element ist ein numpy-Double-Array, das die Distanzen zu den Indizes in i auflistet.
- reset_n_calls()#
Setzt die Anzahl der Aufrufe auf 0 zurück.
- two_point_correlation(X, r, dualtree=False)#
Berechnet die Zwei-Punkt-Korrelationsfunktion
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Ein Array von Punkten zur Abfrage. Die letzte Dimension sollte mit der Dimension der Trainingsdaten übereinstimmen.
- rArray-ähnlich
Ein eindimensionales Array von Distanzen
- dualtreeBool, Standard=False
Wenn True, wird ein Dual-Tree-Algorithmus verwendet. Andernfalls wird ein Single-Tree-Algorithmus verwendet. Dual-Tree-Algorithmen können eine bessere Skalierbarkeit für große N aufweisen.
- Gibt zurück:
- countsArray
counts[i] enthält die Anzahl der Punktpaare mit einer Distanz kleiner oder gleich r[i]