KDTree#
- класс sklearn.neighbors.KDTree#
KDTree для быстрых обобщённых N-точечных задач
Подробнее в Руководство пользователя.
- Параметры:
- Xarray-like формы (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.- метрикаstr или объект DistanceMetric64, по умолчанию='minkowski'
Метрика для вычисления расстояния. По умолчанию "minkowski", что дает стандартное евклидово расстояние при p = 2. A список допустимых метрик для KDTree задается атрибутом
valid_metrics. См. документацию scipy.spatial.distance и метрики, перечисленные вdistance_metricsдля получения дополнительной информации о любой метрике расстояния.- Дополнительные ключевые слова передаются в класс метрики расстояния.
- Примечание: Вызываемые функции в параметре metric НЕ поддерживаются для KDTree
- и Ball Tree. Накладные расходы на вызовы функций приведут к очень низкой производительности.
- Атрибуты:
- данныепредставление памяти
Обучающие данные
- valid_metrics: список строк
Список допустимых метрик расстояния.
Примеры
Запрос для k-ближайших соседей
>>> 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]
Сериализация и десериализация дерева. Обратите внимание, что состояние дерева сохраняется при сериализации: дерево не нужно перестраивать при десериализации.
>>> 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]
Запрос соседей в пределах заданного радиуса
>>> 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]
Вычислить оценку плотности ядра Гаусса:
>>> 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 ])
Вычисляет двухточечную автокорреляционную функцию
>>> 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()#
Получить массивы данных и узлов.
- Возвращает:
- массивы: кортеж массивов
Массивы для хранения данных дерева, индекса, данных узлов и границ узлов.
- get_n_calls()#
Получить количество вызовов.
- Возвращает:
- n_calls: int
количество вызовов вычисления расстояния
- get_tree_stats()#
Получить статус дерева.
- Возвращает:
- tree_stats: кортеж из int
(количество обрезок, количество листьев, количество разбиений)
- kernel_density(X, h, ядро='gaussian', atol=0, rtol=1E-8, breadth_first=True, return_log=False)#
Вычислить оценку плотности ядра в точках X с заданным ядром, используя метрику расстояния, указанную при создании дерева.
- Параметры:
- Xarray-like формы (n_samples, n_features)
Массив точек для запроса. Последняя размерность должна соответствовать размерности обучающих данных.
- hfloat
ширина полосы ядра
- ядроstr, по умолчанию=”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
Вернуть логарифм результата. Это может быть точнее, чем возвращать сам результат для узких ядер.
- Возвращает:
- плотностьndarray формы X.shape[:-1]
Массив оценок (логарифмической) плотности
- запрос(X, k=1, return_distance=True, dualtree=False, breadth_first=False)#
запросить дерево для k ближайших соседей
- Параметры:
- Xarray-like формы (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)if 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
- Параметры:
- Xarray-like формы (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
- countndarray формы X.shape[:-1], dtype=int
Каждая запись указывает количество соседей в пределах расстояния r от соответствующей точки.
- indndarray формы X.shape[:-1], dtype=object
Каждый элемент представляет собой массив целых чисел numpy, перечисляющий индексы соседей соответствующей точки. Обратите внимание, что в отличие от результатов запроса k-ближайших соседей, возвращаемые соседи по умолчанию не отсортированы по расстоянию.
- distndarray формы X.shape[:-1], dtype=object
Каждый элемент представляет собой массив numpy double, перечисляющий расстояния, соответствующие индексам в i.
- reset_n_calls()#
Сбросить количество вызовов до 0.
- two_point_correlation(X, r, dualtree=False)#
Вычислить двухточечную корреляционную функцию
- Параметры:
- Xarray-like формы (n_samples, n_features)
Массив точек для запроса. Последняя размерность должна соответствовать размерности обучающих данных.
- rarray-like
Одномерный массив расстояний
- dualtreebool, по умолчанию=False
Если True, использует алгоритм dualtree. В противном случае использует алгоритм single-tree. Алгоритмы dualtree могут иметь лучшее масштабирование для больших N.
- Возвращает:
- подсчётыndarray
counts[i] содержит количество пар точек с расстоянием меньшим или равным r[i]