Spec-Zone.ru › scikit-learn

BallTree

classsklearn.neighbors.BallTree

BallTree для быстрых обобщенных задач N-точек

Подробнее см. в Руководстве пользователя.

Параметры:
Xarray-like of shape (n_samples, n_features)

n_samples — количество точек в наборе данных, а n_features — размерность параметрического пространства. Примечание: если X — непрерывно упорядоченный массив типа double, данные не будут скопированы. В противном случае будет выполнена внутренняя копия.

leaf_sizeположительное целое число, по умолчанию=40

Количество точек, при котором происходит переход к методу грубой силы. Изменение leaf_size не повлияет на результаты запроса, но может значительно повлиять на скорость запроса и память, необходимую для хранения построенного дерева. Необходимый объем памяти для хранения дерева приблизительно пропорционален n_samples / leaf_size. Для заданного leaf_size, узлу листа гарантированно удовлетворяет leaf_size <= n_points <= 2 * leaf_size, за исключением случая, когда n_samples < leaf_size.

metricstr или DistanceMetric64 объект, по умолчанию=’minkowski’

Метрика для вычисления расстояний. По умолчанию «minkowski», что приводит к стандартному евклидовому расстоянию при p = 2. Список допустимых метрик для BallTree задается атрибутом valid_metrics. См. документацию scipy.spatial.distance и метрики, перечисленные в distance_metrics для получения дополнительной информации о любой метрике расстояния.

Дополнительные ключевые слова передаются в класс метрики расстояния.
Примечание: вызываемые функции в параметре метрики НЕ поддерживаются для KDTree
и BallTree. Накладные расходы на вызов функций приведут к очень низкой производительности.
Атрибуты:
dataвиртуальная память

Обучающие данные

valid_metrics: список str

Список допустимых метрик расстояния.

Примеры

Запрос на поиск 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: int

количество вызовов вычисления расстояния

get_tree_stats()

Получить статус дерева.

Возвращает:
tree_stats: кортеж целых чисел

(количество обрезаний, количество листов, количество разбиений)

kernel_density(X, h, kernel='gaussian', atol=0, rtol=1E-8, breadth_first=True, return_log=False)

Вычислить оценку плотности ядра в точках X с заданным ядром, используя метрику расстояния, указанную при создании дерева.

Параметры:
Xarray-like of shape (n_samples, n_features)

Массив точек для запроса. Последнее измерение должно соответствовать размерности обучающих данных.

hfloat

ширина полосы пропускания ядра

kernelstr, по умолчанию = “gaussian”

указать ядро для использования. Доступные варианты: - ‘gaussian’ - ‘tophat’ - ‘epanechnikov’ - ‘exponential’ - ‘linear’ - ‘cosine’ По умолчанию kernel = ‘gaussian’

atolfloat, по умолчанию=0

Укажите требуемую абсолютную погрешность результата. Если истинное значение K_true, то возвращаемый результат K_ret удовлетворяет abs(K_true - K_ret) < atol + rtol * K_ret. Значение по умолчанию равно нулю (т. е. точность машинного представления).

rtolfloat, по умолчанию=1e-8

Укажите требуемую относительную погрешность результата. Если истинное значение K_true, то возвращаемый результат K_ret удовлетворяет abs(K_true - K_ret) < atol + rtol * K_ret. Значение по умолчанию 1e-8 (т. е. точность машинного представления).

breadth_firstbool, по умолчанию=False

Если True, используйте поиск в ширину. Если False (по умолчанию) используйте поиск в глубину. Поиск в ширину обычно быстрее для компактных ядер и/или высоких допусков.

return_logbool, по умолчанию=False

Возвращать логарифм результата. Это может быть точнее, чем возврат самого результата для узких ядер.

Возвращает:
densityndarray of shape X.shape[:-1]

Массив вычислений (логарифмической) плотности

query(X, k=1, return_distance=True, dualtree=False, breadth_first=False)

запрос к дереву для поиска k ближайших соседей

Параметры:
Xarray-like of shape (n_samples, n_features)

Массив точек для запроса

kint, по умолчанию=1

Количество ближайших соседей для возврата

return_distancebool, по умолчанию=True

если True, вернуть кортеж (d, i) расстояний и индексов, если False, вернуть массив i

dualtreebool, по умолчанию=False

если True, использовать формализм двойного дерева для запроса: дерево строится для точек запроса, и пара деревьев используется для эффективного поиска в этом пространстве. Это может привести к лучшей производительности по мере увеличения количества точек.

breadth_firstbool, по умолчанию=False

если True, запросить узлы в порядке обхода в ширину. В противном случае запросить узлы в порядке обхода в глубину.

sort_resultsbool, по умолчанию=True

если True, то расстояния и индексы каждой точки сортируются по возвращении, так что первая колонка содержит ближайшие точки. В противном случае соседи возвращаются в произвольном порядке.

Возвращает:
iесли return_distance == False
(d,i)если return_distance == True
dndarray of shape X.shape[:-1] + (k,), dtype=double

Каждый элемент содержит список расстояний до соседей соответствующей точки.

indarray of shape X.shape[:-1] + (k,), dtype=int

Каждый элемент содержит список индексов соседей соответствующей точки.

END_OF_DOCUMENT_MARKER
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_distancebool, по умолчанию=False

если True, возвращаются расстояния до соседей каждой точки. Если False, возвращаются только соседи. Обратите внимание, что в отличие от метода query(), установка return_distance=True увеличивает время вычислений. Для return_distance=False не нужно вычислять все расстояния явно. Результаты по умолчанию не отсортированы: см. sort_results.

count_onlybool, по умолчанию=False

если True, возвращается только количество точек в пределах расстояния r. Если False, возвращаются индексы всех точек в пределах расстояния r. Если return_distance==True, установка count_only=True приведет к ошибке.

sort_resultsbool, по умолчанию=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
countмассив NumPy формы X.shape[:-1], тип=int

Каждый элемент указывает количество соседей в пределах расстояния r от соответствующей точки.

indмассив NumPy формы X.shape[:-1], тип=объект

Каждый элемент — это массив целых чисел NumPy, перечисляющий индексы соседей соответствующей точки. Обратите внимание, что в отличие от результатов запроса k-соседей, возвращаемые соседи по умолчанию не отсортированы по расстоянию.

distмассив NumPy формы X.shape[:-1], тип=объект

Каждый элемент — это массив чисел с плавающей точкой NumPy, перечисляющий расстояния, соответствующие индексам в i.

reset_n_calls()

Сброс количества вызовов до 0.

two_point_correlation(X, r, dualtree=False)

Вычисление корреляции двух точек

Параметры:
Xмассив-подобный, форма (n_samples, n_features)

Массив точек для запроса. Последнее измерение должно соответствовать размерности обучающих данных.

rмассив-подобный

Одномерный массив расстояний

dualtreebool, по умолчанию=False

Если True, используется алгоритм dualtree. В противном случае используется алгоритм single-tree. Алгоритмы dual tree могут иметь лучшую масштабируемость для больших N.

Возвращает:
countsмассив NumPy

counts[i] содержит количество пар точек с расстоянием меньше или равным r[i]

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.neighbors.BallTree.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API