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_size wird garantiert, dass ein Blattknoten leaf_size <= n_points <= 2 * leaf_size erfüllt, außer in dem Fall, dass n_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_metrics aufgeführt. Weitere Informationen zu jeder Distanzmetrik finden Sie in der Dokumentation von scipy.spatial.distance und den unter distance_metrics aufgefü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_true ist, dann erfüllt das zurückgegebene Ergebnis K_ret die Bedingung abs(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_true ist, dann erfüllt das zurückgegebene Ergebnis K_ret die Bedingung abs(K_true - K_ret) < atol + rtol * K_ret. Der Standardwert ist 1e-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]