Создание ближайшего соседнего объекта поиска
создает либо 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 объект модели с использованием алгоритма Kd-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' | Один минус коэффициент Jaccard, который является процентом ненулевых координат, которые отличаются |
'mahalanobis' | Расстояние Махаланобиса |
'seuclidean' | Стандартизированное евклидово расстояние |
'spearman' | Один минус выборка ранговой корреляции Спирмена между наблюдениями (рассматривается как последовательности значений) |
Если createns использует исчерпывающий алгоритм поиска ('NSMethod' является 'exhaustive'), то можно также указать дескриптор функции для пользовательской метрики расстояния с помощью @ (например, @distfun). Пользовательская функция расстояния должна:
Иметь форму function D2 = distfun(ZI,ZJ).
Взять в качестве аргументов:
Вектор 1-by-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 (по умолчанию) | положительное целое числоМаксимальное количество точек данных в каждом конечном узле Kd-дерева, указанное как разделенная запятыми пара, состоящая из 'BucketSize' и положительное целое число.
Этот аргумент допустим только при создании KDTreeSearcher объект модели.
Пример: 'BucketSize',10
Типы данных: single | double
NS - Ближайший соседний поисковикExhaustiveSearcher объект модели | KDTreeSearcher объект моделиБлижайший соседний поисковик, возвращенный как ExhaustiveSearcher объект модели или KDTreeSearcher объект модели.
После создания ближайшего объекта модели соседнего поискового устройства можно найти соседние точки в данных обучения к данным запроса, выполнив ближайший поиск соседа с помощью knnsearch или поиск по радиусу с использованием rangesearch.
ExhaustiveSearcher | KDTreeSearcher | knnsearch | rangesearch
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.