BallTree#
- class sklearn.neighbors.BallTree#
BallTree 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 int, default=40
Anzahl der Punkte, ab der auf Brute-Force umgeschaltet wird. Das Ändern von leaf_size beeinflusst die Ergebnisse einer Abfrage nicht, kann aber die Geschwindigkeit einer Abfrage und den für die Speicherung des konstruierten Baums erforderlichen Speicher erheblich beeinträchtigen. Der benötigte Speicherplatz für den Baum skaliert ungefähr mit n_samples / leaf_size. Für eine vorgegebene
leaf_sizeist garantiert, dass ein Blattknotenleaf_size <= n_points <= 2 * leaf_sizeerfüllt, außer in dem Fall, dassn_samples < leaf_size.- metricstr oder DistanceMetric64 object, default=’minkowski’
Metrik zur Entfernungsberechnung. Standard ist "minkowski", was bei p = 2 der Standard-Euklidischen Distanz entspricht. Eine Liste gültiger Metriken für BallTree 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 Distanzmetrik-Klasse übergeben.
- Hinweis: Aufrufbare Funktionen im Parameter metric werden NICHT für KDTree
- und Ball Tree unterstützt. Der Overhead bei Funktionsaufrufen führt zu sehr schlechter Leistung.
- Attribute:
- datamemory view
Die Trainingsdaten
- valid_metrics: list of str
Liste der gültigen Distanzmetriken.
Beispiele
Abfrage der k-nächsten Nachbarn
>>> import numpy as np >>> from sklearn.neighbors import BallTree >>> rng = np.random.RandomState(0) >>> X = rng.random_sample((10, 3)) # 10 points in 3 dimensions >>> tree = BallTree(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]
Speichern und Laden eines Baums. Beachten Sie, dass der Zustand des Baums beim Speichern gesichert wird: Der Baum muss beim Laden 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 = BallTree(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 der Nachbarn innerhalb eines gegebenen Radius
>>> import numpy as np >>> rng = np.random.RandomState(0) >>> X = rng.random_sample((10, 3)) # 10 points in 3 dimensions >>> tree = BallTree(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 = BallTree(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 = BallTree(X) >>> tree.two_point_correlation(X, r) array([ 30, 62, 278, 580, 820])
- get_arrays()#
Abrufen der Daten- und Knoten-Arrays.
- Gibt zurück:
- arrays: tuple of array
Arrays zur Speicherung von Baumdaten, Index, Knotendaten und Knotenbegrenzungen.
- get_n_calls()#
Abrufen der Anzahl der Aufrufe.
- Gibt zurück:
- n_calls: int
Anzahl der Distanzberechnungsaufrufe
- get_tree_stats()#
Abrufen der Baumstatistiken.
- Gibt zurück:
- tree_stats: tuple of int
(Anzahl der Trims, 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 gegebenen Kernel unter Verwendung der beim Erstellen des Baums angegebenen Distanzmetrik.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Ein Array von Punkten zum Abfragen. Die letzte Dimension sollte mit der Dimension der Trainingsdaten übereinstimmen.
- hfloat
Die Bandbreite des Kernels
- kernelstr, default=”gaussian”
Gibt den zu verwendenden Kernel an. Optionen sind: - 'gaussian' - 'tophat' - 'epanechnikov' - 'exponential' - 'linear' - 'cosine' Standard ist kernel = 'gaussian'
- atolFloat, Standard=0
Gibt 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, default=1e-8
Gibt 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, default=False
Wenn True, wird eine Breitensuche verwendet. Wenn False (Standard), wird eine Tiefensuche verwendet. Breitensuche ist im Allgemeinen schneller für kompakte Kernel und/oder hohe Toleranzen.
- return_logbool, default=False
Gibt den Logarithmus des Ergebnisses zurück. Dies kann für schmale Kernel genauer sein als die Rückgabe des Ergebnisses selbst.
- Gibt zurück:
- densityndarray of shape X.shape[:-1]
Das Array der (Logarithmus-)Dichteschätzungen
- 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 zum Abfragen
- kint, default=1
Die Anzahl der zurückzugebenden k-nächsten Nachbarn
- return_distancebool, Standard=True
Wenn True, wird ein Tupel (d, i) von Distanzen und Indizes zurückgegeben. Wenn False, wird das Array i zurückgegeben.
- dualtreebool, default=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 besserer Leistung führen, wenn die Anzahl der Punkte groß wird.
- breadth_firstbool, default=False
Wenn True, werden die Knoten in einer Breitensuche abgefragt. Andernfalls werden die Knoten in einer Tiefensuche abgefragt.
- sort_resultsbool, default=True
Wenn True, werden die Distanzen und Indizes jedes Punktes beim Zurückgeben sortiert, sodass 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
- dndarray of shape X.shape[:-1] + (k,), dtype=double
Jeder Eintrag gibt die Liste der Distanzen zu den Nachbarn des entsprechenden Punktes an.
- indarray of shape X.shape[:-1] + (k,), dtype=int
Jeder Eintrag gibt die Liste der Indizes der Nachbarn des entsprechenden Punktes an.
- 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 zum Abfragen
- rDistanz, innerhalb derer Nachbarn zurückgegeben werden
r kann ein einzelner Wert sein oder ein Array von Werten der Form x.shape[:-1], wenn für jeden Punkt unterschiedliche Radien gewünscht sind.
- return_distancebool, default=False
Wenn True, werden die Distanzen zu den Nachbarn jedes Punktes zurückgegeben. Wenn False, werden nur die Nachbarn zurückgegeben. Beachten Sie, dass das Setzen von return_distance=True hier im Gegensatz zur query()-Methode die Berechnungszeit 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, default=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, führt das Setzen 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, führt das Setzen 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
- countndarray of shape X.shape[:-1], dtype=int
Jeder Eintrag gibt die Anzahl der Nachbarn innerhalb einer Distanz r vom entsprechenden Punkt an.
- indndarray of shape X.shape[:-1], dtype=object
Jedes Element ist ein numpy-Integer-Array, das die Indizes der Nachbarn des entsprechenden Punktes auflistet. Beachten Sie, dass die zurückgegebenen Nachbarn im Gegensatz zu den Ergebnissen einer k-Nachbarn-Abfrage standardmäßig nicht nach Distanz sortiert sind.
- distndarray of shape X.shape[:-1], dtype=object
Jedes Element ist ein numpy-Double-Array, das die Distanzen angibt, die den Indizes in i entsprechen.
- 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 zum Abfragen. Die letzte Dimension sollte mit der Dimension der Trainingsdaten übereinstimmen.
- rarray-like
Ein eindimensionales Array von Distanzen
- dualtreebool, default=False
Wenn True, wird ein Dual-Tree-Algorithmus verwendet. Andernfalls wird ein Single-Tree-Algorithmus verwendet. Dual-Tree-Algorithmen können für große N besser skalieren.
- Gibt zurück:
- countsndarray
counts[i] enthält die Anzahl der Punktpaare mit einer Distanz kleiner oder gleich r[i]