BallTree
- classsklearn.neighbors.BallTree
-
BallTree для быстрого решения обобщённых задач с N точками
Подробнее см. в Руководстве пользователя.
- Параметры:
-
- Xмассивоподобный объект формы (n_samples, n_features)
-
n_samples — количество точек в наборе данных, а n_features — размерность пространства параметров. Примечание: если X — массив чисел двойной точности с непрерывным расположением в памяти в порядке C, данные не будут копироваться. В противном случае будет создана внутренняя копия.
- leaf_sizeположительное целое число, по умолчанию=40
-
Количество точек, при котором выполняется переход к полному перебору. Изменение leaf_size не влияет на результаты запроса, но может существенно повлиять на его скорость и объём памяти, необходимый для хранения построенного дерева. Объём памяти, необходимый для хранения дерева, приблизительно пропорционален n_samples / leaf_size. Для заданного
leaf_sizeгарантируется, что листовой узел удовлетворяетleaf_size <= n_points <= 2 * leaf_size, за исключением случая, когдаn_samples < leaf_size. - metricстрока или объект DistanceMetric64, по умолчанию=’minkowski’
-
Метрика, используемая для вычисления расстояния. По умолчанию используется “minkowski”, которая при p = 2 соответствует стандартному евклидову расстоянию. Список допустимых метрик для BallTree задаётся атрибутом
valid_metrics. Дополнительные сведения о любой метрике расстояния см. в документации scipy.spatial.distance и в списке метрик вdistance_metrics. - Дополнительные ключевые аргументы передаются классу метрики расстояния.
- Примечание: вызываемые функции в параметре metric НЕ поддерживаются для KDTree
- и Ball Tree. Накладные расходы на вызов функции приведут к очень низкой производительности.
- Атрибуты:
-
- dataпредставление памяти
-
Обучающие данные
- valid_metrics: список строк
-
Список допустимых метрик расстояния.
Примеры
Запрос k ближайших соседей
>>> 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]
Сериализация и десериализация дерева с помощью pickle. Обратите внимание, что состояние дерева сохраняется при сериализации: после десериализации дерево не нужно строить заново.
>>> 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]
Запрос соседей в пределах заданного радиуса
>>> 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]
Вычисление оценки плотности с гауссовым ядром:
>>> 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 ])
Вычисление функции автокорреляции двух точек
>>> 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()
-
Получить массивы данных и узлов.
- Возвращает:
-
- arrays: кортеж массивов
-
Массивы для хранения данных дерева, индексов, данных узлов и границ узлов.
- get_n_calls()
-
Получить количество вызовов.
- Возвращает:
-
- n_calls: целое число
-
количество вызовов вычисления расстояния
- get_tree_stats()
-
Получить статистику дерева.
- Возвращает:
-
- tree_stats: кортеж целых чисел
-
(количество отсечений, количество листьев, количество разбиений)
- kernel_density(X, h, kernel='gaussian', atol=0, rtol=1E-8, breadth_first=True, return_log=False)
-
Вычислить оценку плотности ядра в точках X с заданным ядром, используя метрику расстояния, указанную при создании дерева.
- Параметры:
-
- Xмассивоподобный объект формы (n_samples, n_features)
-
Массив точек для запроса. Последняя размерность должна совпадать с размерностью обучающих данных.
- hвещественное число
-
ширина полосы ядра
- kernelстрока, по умолчанию=”gaussian”
-
задаёт используемое ядро. Доступны варианты: ‘gaussian’, ‘tophat’, ‘epanechnikov’, ‘exponential’, ‘linear’, ‘cosine’. По умолчанию kernel = ‘gaussian’
- atolвещественное число, по умолчанию=0
-
Задаёт требуемую абсолютную точность результата. Если истинный результат равен
K_true, то возвращаемый результатK_retудовлетворяет условиюabs(K_true - K_ret) < atol + rtol * K_retПо умолчанию равно нулю (то есть соответствует машинной точности). - rtolвещественное число, по умолчанию=1e-8
-
Задаёт требуемую относительную точность результата. Если истинный результат равен
K_true, то возвращаемый результатK_retудовлетворяет условиюabs(K_true - K_ret) < atol + rtol * K_retПо умолчанию равно1e-8(то есть соответствует машинной точности). - breadth_firstлогическое значение, по умолчанию=False
-
Если True, используется поиск в ширину. Если False (значение по умолчанию), используется поиск в глубину. Поиск в ширину обычно быстрее для компактных ядер и/или при высокой точности.
- return_logлогическое значение, по умолчанию=False
-
Возвращать логарифм результата. Для узких ядер это может быть точнее, чем возвращать сам результат.
- Возвращает:
-
- densityndarray формы X.shape[:-1]
-
Массив значений плотности (или логарифма плотности)
- query(X, k=1, return_distance=True, dualtree=False, breadth_first=False)
-
Выполнить запрос к дереву для поиска k ближайших соседей
- Параметры:
-
- Xмассивоподобный объект формы (n_samples, n_features)
-
Массив точек для запроса
- kцелое число, по умолчанию=1
-
Количество ближайших соседей для возврата
- return_distanceлогическое значение, по умолчанию=True
-
если True, возвращается кортеж (d, i) с расстояниями и индексами; если False, возвращается массив i
- dualtreeлогическое значение, по умолчанию=False
-
если True, для запроса используется метод двойного дерева: для точек запроса строится дерево, а пара деревьев используется для эффективного поиска в этом пространстве. Это может повысить производительность при большом количестве точек.
- breadth_firstлогическое значение, по умолчанию=False
-
если True, узлы запрашиваются в порядке обхода в ширину. В противном случае узлы запрашиваются в порядке обхода в глубину.
- sort_resultsлогическое значение, по умолчанию=True
-
если True, расстояния и индексы для каждой точки сортируются перед возвратом, поэтому в первом столбце находятся ближайшие точки. В противном случае соседи возвращаются в произвольном порядке.
- Возвращает:
-
- iесли return_distance == False
- (d,i)если return_distance == True
- dndarray формы X.shape[:-1] + (k,), dtype=double
-
Каждый элемент содержит список расстояний до соседей соответствующей точки.
- indarray формы X.shape[:-1] + (k,), dtype=int
-
Каждый элемент содержит список индексов соседей соответствующей точки.
- query_radius(X, r, return_distance=False, count_only=False, sort_results=False)
-
Выполнить запрос к дереву для поиска соседей в пределах радиуса r
- Параметры:
-
- Xмассивоподобный объект формы (n_samples, n_features)
-
Массив точек для запроса
- rрасстояние, в пределах которого возвращаются соседи
-
r может быть одним значением или массивом значений формы x.shape[:-1], если для каждой точки требуется задать свой радиус.
- return_distanceлогическое значение, по умолчанию=False
-
если True, возвращаются расстояния до соседей каждой точки; если False, возвращаются только соседи. Обратите внимание: в отличие от метода query(), установка return_distance=True в этом случае увеличивает время вычислений. При return_distance=False нет необходимости вычислять все расстояния явно. По умолчанию результаты не сортируются: см. ключевой аргумент
sort_results. - count_onlyлогическое значение, по умолчанию=False
-
если True, возвращается только количество точек на расстоянии не более r; если False, возвращаются индексы всех точек на расстоянии не более r. Если return_distance==True, установка count_only=True приведёт к ошибке.
- sort_resultsлогическое значение, по умолчанию=False
-
если True, расстояния и индексы сортируются перед возвратом. Если False, результаты не сортируются. Если return_distance == False, установка sort_results = True приведёт к ошибке.
- Возвращает:
-
- countесли count_only == True
- indесли count_only == False и return_distance == False
- (ind, dist)если count_only == False и return_distance == True
- countndarray формы X.shape[:-1], dtype=int
-
Каждый элемент содержит количество соседей соответствующей точки на расстоянии не более r.
- indndarray формы X.shape[:-1], dtype=object
-
Каждый элемент — целочисленный массив numpy со списком индексов соседей соответствующей точки. Обратите внимание: в отличие от результатов запроса k ближайших соседей, возвращаемые соседи по умолчанию не сортируются по расстоянию.
- distndarray формы X.shape[:-1], dtype=object
-
Каждый элемент — массив чисел двойной точности numpy со списком расстояний, соответствующих индексам в i.
- reset_n_calls()
-
Сбросить количество вызовов до 0.
- two_point_correlation(X, r, dualtree=False)
-
Вычислить функцию корреляции двух точек
- Параметры:
-
- Xмассивоподобный объект формы (n_samples, n_features)
-
Массив точек для запроса. Последняя размерность должна совпадать с размерностью обучающих данных.
- rмассивоподобный объект
-
Одномерный массив расстояний
- dualtreeлогическое значение, по умолчанию=False
-
Если True, используется алгоритм двойного дерева. В противном случае используется алгоритм с одним деревом. Алгоритмы двойного дерева могут лучше масштабироваться при больших значениях N.
- Возвращает:
-
- countsndarray
-
counts[i] содержит количество пар точек, расстояние между которыми меньше или равно r[i]
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.neighbors.BallTree.html