NearestNeighbors#
- класс sklearn.neighbors.NearestNeighbors(*, n_neighbors=5, radius=1.0, алгоритм='auto', leaf_size=30, метрика='minkowski', p=2, metric_params=None, n_jobs=None)[источник]#
Неконтролируемый обучающийся для реализации поиска соседей.
Подробнее в Руководство пользователя.
Добавлено в версии 0.9.
- Параметры:
- n_neighborsint, по умолчанию=5
Количество соседей для использования по умолчанию для
kneighborsзапросы.- radiusfloat, по умолчанию=1.0
Диапазон пространства параметров, используемый по умолчанию для
radius_neighborsзапросы.- алгоритм{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, по умолчанию=’auto’
Алгоритм, используемый для вычисления ближайших соседей:
'ball_tree' будет использовать
BallTree'kd_tree' будет использовать
KDTree'brute' будет использовать поиск методом грубой силы.
'auto' попытается определить наиболее подходящий алгоритм на основе значений, переданных в
fitметод.
Примечание: обучение на разреженных входных данных переопределит настройку этого параметра, используя метод грубой силы.
- leaf_sizeint, по умолчанию=30
Размер листа, передаваемый в BallTree или KDTree. Это может влиять на скорость построения и запросов, а также на память, требуемую для хранения дерева. Оптимальное значение зависит от характера задачи.
- метрикаstr или callable, по умолчанию='minkowski'
Метрика для вычисления расстояния. По умолчанию “minkowski”, что дает стандартное евклидово расстояние при p = 2. См. документацию scipy.spatial.distance и метрики, перечисленные в
distance_metricsдля допустимых значений метрик.Если метрика "precomputed", X считается матрицей расстояний и должна быть квадратной во время подгонки. X может быть разреженный граф, в этом случае только "ненулевые" элементы могут считаться соседями.
Если metric - вызываемая функция, она принимает два массива, представляющих 1D векторы, в качестве входных данных и должна возвращать одно значение, указывающее расстояние между этими векторами. Это работает для метрик Scipy, но менее эффективно, чем передача имени метрики в виде строки.
- pfloat (положительный), по умолчанию=2
Параметр для метрики Минковского из sklearn.metrics.pairwise.pairwise_distances. При p = 1 это эквивалентно использованию manhattan_distance (l1) и euclidean_distance (l2) для p = 2. Для произвольного p используется minkowski_distance (l_p).
- metric_paramsdict, по умолчанию=None
Дополнительные именованные аргументы для метрической функции.
- n_jobsint, default=None
Количество параллельных задач для поиска соседей.
Noneозначает 1, если только не вjoblib.parallel_backendконтекст.-1означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.
- Атрибуты:
- effective_metric_str
Метрика, используемая для вычисления расстояний до соседей.
- effective_metric_params_dict
Параметры для метрики, используемой для вычисления расстояний до соседей.
- n_features_in_int
Количество признаков, замеченных во время fit.
Добавлено в версии 0.24.
- feature_names_in_ndarray формы (
n_features_in_,) Имена признаков, наблюдаемых во время fit. Определено только когда
Xимеет имена признаков, которые все являются строками.Добавлено в версии 1.0.
- n_samples_fit_int
Количество образцов в обученных данных.
Смотрите также
KNeighborsClassifierКлассификатор, реализующий голосование k ближайших соседей.
RadiusNeighborsClassifierКлассификатор, реализующий голосование среди соседей в заданном радиусе.
KNeighborsRegressorРегрессия на основе k ближайших соседей.
RadiusNeighborsRegressorРегрессия на основе соседей в пределах фиксированного радиуса.
BallTreeСтруктура данных для пространственного разбиения, организующая точки в многомерном пространстве, используемая для поиска ближайших соседей.
Примечания
См. Ближайшие соседи в онлайн-документации для обсуждения выбора
algorithmиleaf_size.https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
Примеры
>>> import numpy as np >>> from sklearn.neighbors import NearestNeighbors >>> samples = [[0, 0, 2], [1, 0, 0], [0, 0, 1]] >>> neigh = NearestNeighbors(n_neighbors=2, radius=0.4) >>> neigh.fit(samples) NearestNeighbors(...) >>> neigh.kneighbors([[0, 0, 1.3]], 2, return_distance=False) array([[2, 0]]...) >>> nbrs = neigh.radius_neighbors( ... [[0, 0, 1.3]], 0.4, return_distance=False ... ) >>> np.asarray(nbrs[0][0]) array(2)
- fit(X, y=None)[источник]#
Обучите оценщик ближайших соседей на обучающем наборе данных.
- Параметры:
- X{array-like, sparse matrix} формы (n_samples, n_features) или (n_samples, n_samples) если metric='precomputed'
Обучающие данные.
- yИгнорируется
Не используется, присутствует для согласованности API по соглашению.
- Возвращает:
- selfNearestNeighbors
Обученный оценщик ближайших соседей.
- 6332()[источник]#
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.
- Возвращает:
- маршрутизацияMetadataRequest
A
MetadataRequestИнкапсуляция информации о маршрутизации.
- get_params(глубокий=True)[источник]#
Получить параметры для этого оценщика.
- Параметры:
- глубокийbool, по умолчанию=True
Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.
- Возвращает:
- paramsdict
Имена параметров, сопоставленные с их значениями.
- kneighbors(X=None, n_neighbors=None, return_distance=True)[источник]#
Найти K ближайших соседей точки.
Возвращает индексы и расстояния до соседей каждой точки.
- Параметры:
- X{array-like, sparse matrix}, shape (n_queries, n_features), или (n_queries, n_indexed) если metric == 'precomputed', default=None
Точка или точки запроса. Если не указано, возвращаются соседи каждой индексированной точки. В этом случае точка запроса не считается своим собственным соседом.
- n_neighborsint, default=None
Количество соседей, требуемых для каждого образца. По умолчанию используется значение, переданное конструктору.
- return_distancebool, по умолчанию=True
Возвращать ли расстояния.
- Возвращает:
- neigh_distndarray формы (n_queries, n_neighbors)
Массив, представляющий длины до точек, присутствует только если return_distance=True.
- neigh_indndarray формы (n_queries, n_neighbors)
Индексы ближайших точек в матрице популяции.
Примеры
В следующем примере мы создаем класс NearestNeighbors из массива, представляющего наш набор данных, и спрашиваем, какая точка ближе всего к [1,1,1]
>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(n_neighbors=1) >>> neigh.fit(samples) NearestNeighbors(n_neighbors=1) >>> print(neigh.kneighbors([[1., 1., 1.]])) (array([[0.5]]), array([[2]]))
Как видите, он возвращает [[0.5]] и [[2]], что означает, что элемент находится на расстоянии 0.5 и является третьим элементом выборок (индексы начинаются с 0). Вы также можете запросить несколько точек:
>>> X = [[0., 1., 0.], [1., 0., 1.]] >>> neigh.kneighbors(X, return_distance=False) array([[1], [2]]...)
- kneighbors_graph(X=None, n_neighbors=None, mode='connectivity')[источник]#
Вычислить (взвешенный) граф k-ближайших соседей для точек в X.
- Параметры:
- X{array-like, sparse matrix} формы (n_queries, n_features), или (n_queries, n_indexed) если metric == ‘precomputed’, default=None
Точка или точки запроса. Если не предоставлено, возвращаются соседи каждой индексированной точки. В этом случае точка запроса не считается своим собственным соседом. Для
metric='precomputed'форма должна быть (n_queries, n_indexed). В противном случае форма должна быть (n_queries, n_features).- n_neighborsint, default=None
Количество соседей для каждой выборки. По умолчанию используется значение, переданное конструктору.
- mode{'connectivity', 'distance'}, по умолчанию='connectivity'
Тип возвращаемой матрицы: 'connectivity' вернет матрицу связности с единицами и нулями, в 'distance' ребра являются расстояниями между точками, тип расстояния зависит от выбранного параметра metric в классе NearestNeighbors.
- Возвращает:
- Aразреженная матрица формы (n_queries, n_samples_fit)
n_samples_fitэто количество образцов в подогнанных данных.A[i, j]дает вес ребра, соединяющегоitoj. Матрица имеет формат CSR.
Смотрите также
NearestNeighbors.radius_neighbors_graphВычислить (взвешенный) граф соседей для точек в X.
Примеры
>>> X = [[0], [3], [1]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(n_neighbors=2) >>> neigh.fit(X) NearestNeighbors(n_neighbors=2) >>> A = neigh.kneighbors_graph(X) >>> A.toarray() array([[1., 0., 1.], [0., 1., 1.], [1., 0., 1.]])
- radius_neighbors(X=None, radius=None, return_distance=True, sort_results=False)[источник]#
Найти соседей в заданном радиусе от точки или точек.
Возвращает индексы и расстояния каждой точки из набора данных, лежащей в шаре размером
radiusвокруг точек массива запроса. Точки, лежащие на границе, включаются в результаты.Результирующие точки не не обязательно отсортированы по расстоянию до их точки запроса.
- Параметры:
- X{array-like, sparse matrix} формы (n_samples, n_features), по умолчанию=None
Точка или точки запроса. Если не указано, возвращаются соседи каждой индексированной точки. В этом случае точка запроса не считается своим собственным соседом.
- radiusfloat, по умолчанию=None
Ограничение расстояния соседей для возврата. По умолчанию используется значение, переданное конструктору.
- return_distancebool, по умолчанию=True
Возвращать ли расстояния.
- sort_resultsbool, по умолчанию=False
Если True, расстояния и индексы будут отсортированы по возрастанию расстояний перед возвратом. Если False, результаты могут быть не отсортированы. Если
return_distance=False, установкаsort_results=Trueприведет к ошибке.Добавлено в версии 0.22.
- Возвращает:
- neigh_distndarray формы (n_samples,) массивов
Массив, представляющий расстояния до каждой точки, присутствует только если
return_distance=True. Значения расстояния вычисляются в соответствии сmetricпараметр конструктора.- neigh_indndarray формы (n_samples,) массивов
Массив массивов индексов приближенных ближайших точек из матрицы популяции, которые лежат внутри шара размера
radiusвокруг точек запроса.
Примечания
Поскольку количество соседей каждой точки не обязательно одинаково, результаты для нескольких запрашиваемых точек не могут быть помещены в стандартный массив данных. Для эффективности,
radius_neighborsвозвращает массивы объектов, где каждый объект — это 1D массив индексов или расстояний.Примеры
В следующем примере мы создаём класс NeighborsClassifier из массива, представляющего наш набор данных, и спрашиваем, какая точка ближе всего к [1, 1, 1]:
>>> import numpy as np >>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(radius=1.6) >>> neigh.fit(samples) NearestNeighbors(radius=1.6) >>> rng = neigh.radius_neighbors([[1., 1., 1.]]) >>> print(np.asarray(rng[0][0])) [1.5 0.5] >>> print(np.asarray(rng[1][0])) [1 2]
Первый возвращаемый массив содержит расстояния до всех точек, которые ближе чем 1.6, а второй возвращаемый массив содержит их индексы. В общем случае можно запрашивать несколько точек одновременно.
- radius_neighbors_graph(X=None, radius=None, mode='connectivity', sort_results=False)[источник]#
Вычислить (взвешенный) граф соседей для точек в X.
Окрестности ограничены точками на расстоянии меньше радиуса.
- Параметры:
- X{array-like, sparse matrix} формы (n_samples, n_features), по умолчанию=None
Точка или точки запроса. Если не указано, возвращаются соседи каждой индексированной точки. В этом случае точка запроса не считается своим собственным соседом.
- radiusfloat, по умолчанию=None
Радиус окрестностей. По умолчанию используется значение, переданное в конструктор.
- mode{'connectivity', 'distance'}, по умолчанию='connectivity'
Тип возвращаемой матрицы: 'connectivity' вернет матрицу связности с единицами и нулями, в 'distance' ребра являются расстояниями между точками, тип расстояния зависит от выбранного параметра metric в классе NearestNeighbors.
- sort_resultsbool, по умолчанию=False
Если True, в каждой строке результата ненулевые элементы будут отсортированы по возрастанию расстояний. Если False, ненулевые элементы могут не быть отсортированы. Используется только с mode=’distance’.
Добавлено в версии 0.22.
- Возвращает:
- Aразреженная матрица формы (n_queries, n_samples_fit)
n_samples_fitэто количество образцов в подогнанных данных.A[i, j]дает вес ребра, соединяющегоitoj. Матрица имеет формат CSR.
Смотрите также
kneighbors_graphВычислить (взвешенный) граф k-ближайших соседей для точек в X.
Примеры
>>> X = [[0], [3], [1]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(radius=1.5) >>> neigh.fit(X) NearestNeighbors(radius=1.5) >>> A = neigh.radius_neighbors_graph(X) >>> A.toarray() array([[1., 0., 1.], [0., 1., 0.], [1., 0., 1.]])
- set_params(**params)[источник]#
Установить параметры этого оценщика.
Метод работает как на простых оценщиках, так и на вложенных объектах (таких как
Pipeline). Последние имеют параметры видачтобы можно было обновить каждый компонент вложенного объекта.__ - Параметры:
- **paramsdict
Параметры оценщика.
- Возвращает:
- selfэкземпляр estimator
Экземпляр оценщика.