Создайте ближайший соседний объект поиска
создает либо NS
= createns(X
)ExhaustiveSearcher
или KDTreeSearcher
моделировать объект с помощью n -by K числовой матрицы обучающих данных X
.
задает дополнительные опции, используя один или несколько аргументы пары "имя-значение". Для примера можно задать NS
= createns(X
,Name,Value
)NSMethod
для определения типа создаваемого объекта.
Загрузите набор данных радужки Фишера.
load fisheriris
X = meas;
[n,k] = size(X)
n = 150
k = 4
X
имеет 150 наблюдений и 4 предиктора.
Подготовьте исчерпывающий поиск по ближайшему соседу, используя весь набор данных в качестве обучающих данных.
Mdl1 = ExhaustiveSearcher(X)
Mdl1 = ExhaustiveSearcher with properties: Distance: 'euclidean' DistParameter: [] X: [150x4 double]
Mdl1
является ExhaustiveSearcher
объект модели и его свойства появляются в Командном окне. Объект содержит информацию о обученном алгоритме, таком как метрика расстояния. Можно изменить значения свойств с помощью записи через точку.
Кроме того, можно подготовить исчерпывающий поиск по ближайшему соседу при помощи createns
и определение 'exhaustive'
как метод поиска.
Mdl2 = createns(X,'NSMethod','exhaustive')
Mdl2 = ExhaustiveSearcher with properties: Distance: 'euclidean' DistParameter: [] X: [150x4 double]
Mdl2
также является ExhaustiveSearcher
объект модели, и он эквивалентен Mdl1
.
Поиск по X
для ближайших соседей с пакетом данных запроса передайте ExhaustiveSearcher
объект модели и данные запроса для knnsearch
или rangesearch
.
Вырастите четырехмерное Kd-дерево, которое использует евклидово расстояние.
Загрузите набор данных радужки Фишера.
load fisheriris
X = meas;
[n,k] = size(X)
n = 150
k = 4
X
имеет 150 наблюдений и 4 предиктора.
Вырастите четырехмерное Kd-дерево, используя весь набор данных в качестве обучающих данных.
Mdl1 = KDTreeSearcher(X)
Mdl1 = KDTreeSearcher with properties: BucketSize: 50 Distance: 'euclidean' DistParameter: [] X: [150x4 double]
Mdl1
является KDTreeSearcher
объект модели и его свойства появляются в Командном окне. Объект содержит информацию о выращенном четырехмерном Kd-дереве, таком как метрика расстояния. Можно изменить значения свойств с помощью записи через точку.
Также можно вырастить Kd-дерево при помощи createns
.
Mdl2 = createns(X)
Mdl2 = KDTreeSearcher with properties: BucketSize: 50 Distance: 'euclidean' DistParameter: [] X: [150x4 double]
Mdl2
также является KDTreeSearcher
объект модели, и он эквивалентен Mdl1
. Потому что X
имеет четыре столбца, и метрика расстояния по умолчанию Евклидова, createns
создает KDTreeSearcher
модель по умолчанию.
Чтобы найти ближайших соседей по X
в пакет данных запроса передайте KDTreeSearcher
объект модели и данные запроса для knnsearch
или rangesearch
.
Вырастите Kd-дерево, которое использует расстояние Минковского с показателем пяти.
Загрузите набор данных радужки Фишера. Создайте переменную для размерностей лепестка.
load fisheriris
X = meas(:,3:4);
Выращивайте Kd-дерево. Задайте расстояние Минковского с показателем пяти.
Mdl = createns(X,'Distance','minkowski','P',5)
Mdl = KDTreeSearcher with properties: BucketSize: 50 Distance: 'minkowski' DistParameter: 5 X: [150x2 double]
Потому что X
имеет два столбца и метрика расстояния Минковский, createns
создает KDTreeSearcher
объект модели по умолчанию.
Создайте исчерпывающий объект поиска при помощи createns
функция. Передайте объект и запросите данные в knnsearch
функция для поиска k-ближайших соседей.
Загрузите набор данных радужки Фишера.
load fisheriris
Удалите пять ирисов случайным образом из данных предиктора для использования в качестве набора запросов.
rng('default'); % For reproducibility n = size(meas,1); % Sample size qIdx = randsample(n,5); % Indices of query data X = meas(~ismember(1:n,qIdx),:); Y = meas(qIdx,:);
Подготовьте исчерпывающий поиск по ближайшему соседу с помощью обучающих данных. Задайте расстояние Махаланобиса для нахождения ближайших соседей.
Mdl = createns(X,'Distance','mahalanobis')
Mdl = ExhaustiveSearcher with properties: Distance: 'mahalanobis' DistParameter: [4x4 double] X: [145x4 double]
Потому что метрика расстояния Махаланобис, createns
создает ExhaustiveSearcher
объект модели по умолчанию.
Программа использует ковариационную матрицу предикторов (столбцов) в обучающих данных для вычисления расстояния Махаланобиса. Чтобы отобразить это значение, используйте Mdl.DistParameter
.
Mdl.DistParameter
ans = 4×4
0.6547 -0.0368 1.2320 0.5026
-0.0368 0.1914 -0.3227 -0.1193
1.2320 -0.3227 3.0671 1.2842
0.5026 -0.1193 1.2842 0.5800
Найдите индексы обучающих данных (Mdl.X
), которые являются двумя ближайшими соседями каждой точки в данных запроса (Y
).
IdxNN = knnsearch(Mdl,Y,'K',2)
IdxNN = 5×2
5 6
98 95
104 128
135 65
102 115
Каждая строка IdxNN
соответствует наблюдению данных запроса. Порядок столбцов соответствует порядку ближайших соседей относительно возрастающего расстояния. Например, на основе метрики Махаланобиса, второго ближайшего соседа Y(3,:)
является X(128,:)
.
X
- Обучающие данныеОбучающие данные, заданные как числовая матрица. X
имеет n строки, каждая из которых соответствует наблюдению (то есть образцу или примеру), и K столбцов, каждый из которых соответствует предиктору (то есть функции).
Типы данных: single
| double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
NS = createns(X,'Distance','mahalanobis')
создает ExhaustiveSearcher
объект модели, который использует метрику расстояния Махаланобиса при поиске ближайших соседей.'NSMethod'
- Метод поиска по ближайшему соседу'kdtree'
| 'exhaustive'
Метод поиска по ближайшему соседу, используемый для определения типа созданного объекта, заданный как разделенная разделенными запятой парами, состоящая из 'NSMethod'
и 'kdtree'
или 'exhaustive'
.
'kdtree'
— createns
создает KDTreeSearcher
моделировать объект с помощью K алгоритма d-tree.
'exhaustive'
— createns
создает ExhaustiveSearcher
моделировать объект с помощью алгоритма исчерпывающего поиска.
Значение по умолчанию 'kdtree'
когда эти три условия верны:
В противном случае значение по умолчанию является 'exhaustive'
.
Пример: 'NSMethod','exhaustive'
'Distance'
- Метрика расстояния'euclidean'
(по умолчанию) | вектор символов или строковый скаляр имени метрики расстояния | пользовательской функции расстоянияМетрика расстояния, используемая при вызове knnsearch
или rangesearch
для поиска ближайших соседей для будущих точек запроса, заданных как разделенная разделенными запятой парами, состоящая из 'Distance'
и вектор символов или строковый скаляр метрического имени расстояния или указателя на функцию.
Для обоих типов ближайших соседних искателей, createns
поддерживает эти метрики расстояния.
Значение | Описание |
---|---|
'chebychev' | Расстояние Чебычева (максимальное различие координат). |
'cityblock' | Расстояние между блоками. |
'euclidean' | Евклидово расстояние. |
'minkowski' | Расстояние Минковского. Экспонента по умолчанию является 2. Чтобы задать другую экспоненту, используйте 'P' аргумент пары "имя-значение". |
Если createns
использует алгоритм исчерпывающего поиска ('NSMethod'
является 'exhaustive'
), затем createns
также поддерживает эти метрики расстояния.
Значение | Описание |
---|---|
'correlation' | Один минус выборка линейной корреляции между наблюдениями (рассматривается как последовательности значений) |
'cosine' | Один минус косинус включенного угла между наблюдениями (рассматривается как векторы-строки) |
'hamming' | Расстояние Хемминга, которое является процентом координат, которые различаются |
'jaccard' | Один минус коэффициент Жаккарда, который является процентом ненулевых координат, которые различаются |
'mahalanobis' | Расстояние Махаланобиса |
'seuclidean' | Стандартизированное Евклидово расстояние |
'spearman' | Один минус выборки корреляции ранга Спирмена между наблюдениями (рассматриваются как последовательности значений) |
Если createns
использует алгоритм исчерпывающего поиска ('NSMethod'
является 'exhaustive'
), затем можно также задать указатель на функцию для пользовательской метрики расстояния при помощи @
(например, @distfun
). Пользовательская функция расстояния должна:
Иметь форму function D2 = distfun(ZI,ZJ)
.
Примите за аргументы:
Вектор A 1 K байта ZI
содержащий одну строку из X
или из точек запроса Y
, где K количество столбцов в X
.
Матрица m -by K ZJ
содержит несколько строк X
или Y
, где m является положительным целым числом.
Верните вектор m -by-1 расстояний D2
, где D2
- расстояние между наблюдениями (j
)ZI
и ZJ
.(j
,:)
Для получения дополнительной информации см. «Метрики расстояния».
Пример: 'Distance','minkowski'
'P'
- Экспонента для метрики расстояния Минковского2
(по умолчанию) | положительная скалярная величинаЭкспонента для метрики расстояния Минковского, заданная как разделенная разделенными запятой парами, состоящая из 'P'
и положительная скалярная величина. Этот аргумент действителен только в том случае, если 'Distance'
является 'minkowski'
.
Пример: 'P',3
Типы данных: single
| double
'Cov'
- Ковариационная матрица для метрики расстояния Махаланобисаcov(X,'omitrows')
(по умолчанию) | положительно определенную матрицуКовариационная матрица для метрики расстояния Махаланобиса, заданная как разделенная разделенными запятой парами, состоящая из 'Cov'
и K -by K положительно определенной матрицей, где K - количество столбцов в X
. Этот аргумент действителен только в том случае, если 'Distance'
является 'mahalanobis'
.
Пример: 'Cov',eye(3)
Типы данных: single
| double
'Scale'
- значение параметров для стандартизированной метрики Евклидова расстоянияstd(X,'omitnan')
(по умолчанию) | неотрицательный числовой векторЗначение параметров для стандартизированной метрики Евклидова расстояния, заданное как разделенная разделенными запятой парами, состоящая из 'Scale'
и неотрицательный числовой вектор длины K, где K - количество столбцов в X
. Программа масштабирует каждое различие между данными обучения и запросами, используя соответствующий элемент Scale
. Этот аргумент действителен только в том случае, если 'Distance'
является 'seuclidean'
.
Пример: 'Scale',quantile(X,0.75) - quantile(X,0.25)
Типы данных: single
| double
'BucketSize'
- Максимальное количество точек данных в каждом листовом узле50
(по умолчанию) | положительное целое числоМаксимальное количество точек данных в каждом конечном узле K d-дерева, заданное как разделенная разделенными запятой парами, состоящая из 'BucketSize'
и положительное целое число.
Этот аргумент действителен только при создании KDTreeSearcher
объект модели.
Пример: 'BucketSize',10
Типы данных: single
| double
NS
- Ближайший соседний искательExhaustiveSearcher
объект модели | KDTreeSearcher
объект моделиБлижайший соседний искатель, возвращается как ExhaustiveSearcher
объект модели или KDTreeSearcher
объект модели.
Если вы создаете объект модели ближайшего соседа-искателя, можно найти соседние точки в обучающих данных к данным запроса, выполнив ближайший поиск соседа с помощью knnsearch
или радиус поиска с помощью rangesearch
.
ExhaustiveSearcher
| KDTreeSearcher
| knnsearch
| rangesearch
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.