createns

Создайте самый близкий соседний объект искателя

Синтаксис

NS = createns(X)
NS = createns(X,Name,Value)

Описание

пример

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-nearest.

Загрузите ирисовый набор данных Фишера.

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,:);

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

Mdl = createns(X,'Distance','mahalanobis')
Mdl = 
  ExhaustiveSearcher with properties:

         Distance: 'mahalanobis'
    DistParameter: [4x4 double]
                X: [145x4 double]

Поскольку метрикой расстояния является Mahalanobis, createns создает объект модели ExhaustiveSearcher по умолчанию.

Программное обеспечение использует ковариационную матрицу предикторов (столбцы) в данных тренировки для вычисления расстояния Mahalanobis. Чтобы отобразить это значение, используйте 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 соответствует наблюдению данных о запросе. Порядок следования столбцов соответствует порядку самых близких соседей относительно возрастающего расстояния. Например, на основе метрики Mahalanobis, вторым самым близким соседом Y(3,:) является X(128,:).

Входные параметры

свернуть все

Данные тренировки, заданные как числовая матрица. X имеет строки n, каждый соответствующий наблюдению (то есть, экземпляр или пример), и столбцы K, каждый соответствующий предиктору (то есть, функция).

Типы данных: single | double

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: NS = createns(X,'Distance','mahalanobis') создает объект модели ExhaustiveSearcher, который использует метрику расстояния Mahalanobis при поиске самых близких соседей.

Для исчерпывающего и Kd-дерева самые близкие соседние искатели

свернуть все

Самый близкий соседний метод поиска раньше задавал тип объекта, созданного, заданного как пара, разделенная запятой, состоящая из 'NSMethod' и 'kdtree' или 'exhaustive'.

  • 'kdtree'createns создает объект модели KDTreeSearcher с помощью алгоритма d-дерева K.

  • 'exhaustive'createns создает объект модели ExhaustiveSearcher с помощью алгоритма исчерпывающего поиска.

Значением по умолчанию является 'kdtree', когда эти три условия верны:

  • Количество столбцов X (K) меньше чем или равно 10 (то есть, K ≤ 10).

  • X не разрежен.

  • Distance является 'euclidean', 'cityblock', 'chebychev' или 'minkowski'.

В противном случае значением по умолчанию является 'exhaustive'.

Пример: 'NSMethod','exhaustive'

Метрика расстояния использовала, когда вы вызываете knnsearch или rangesearch, чтобы найти самых близких соседей к точкам будущего запроса, заданным как пара, разделенная запятой, состоящая из 'Distance' и вектора символов или представить скаляр в виде строки метрического имени расстояния или указателя на функцию.

Для обоих типов самых близких соседних искателей createns поддерживает эти метрики расстояния.

ЗначениеОписание
'chebychev'Расстояние Чебычева (максимум координируют различие).
'cityblock'Расстояние городского квартала.
'euclidean'Евклидово расстояние.
'minkowski'Расстояние Минковскего. Экспонента по умолчанию равняется 2. Чтобы задать различную экспоненту, используйте аргумент пары "имя-значение" 'P'.

Если createns использует алгоритм исчерпывающего поиска ('NSMethod' является 'exhaustive'), то createns также поддерживает эти метрики расстояния.

ЗначениеОписание
'correlation'Один минус демонстрационная линейная корреляция между наблюдениями (обработанный как последовательности значений)
'cosine'Один минус косинус включенного угла между наблюдениями (обработанный как векторы - строки)
'hamming'Расстояние Хемминга, которое является процентом координат, которые отличаются
'jaccard'Один минус коэффициент Jaccard, который является процентом ненулевых координат, которые отличаются
'mahalanobis'Расстояние Mahalanobis
'seuclidean'Стандартизированное Евклидово расстояние
'spearman'Один минус порядковая корреляция демонстрационного Копьеносца между наблюдениями (обработанный как последовательности значений)

Если createns использует алгоритм исчерпывающего поиска ('NSMethod' является 'exhaustive'), то можно также задать указатель на функцию для пользовательской метрики расстояния при помощи @ (например, @distfun). Пользовательская функция расстояния должна:

  • Имейте форму function D2 = distfun(ZI,ZJ).

  • Возьмите в качестве аргументов:

    • 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' и положительной скалярной величины. Этот аргумент допустим, только если 'Distance' является 'minkowski'.

Пример: 'P',3

Типы данных: single | double

Для исчерпывающих самых близких соседних искателей

свернуть все

Ковариационная матрица для метрики расстояния Mahalanobis, заданной как пара, разделенная запятой, состоящая из 'Cov' и K-by-K положительная определенная матрица, где K является количеством столбцов в X. Этот аргумент допустим, только если 'Distance' является 'mahalanobis'.

Пример: 'Cov',eye(3)

Типы данных: single | double

Значение масштабного коэффициента для стандартизированной Евклидовой метрики расстояния, заданной как пара, разделенная запятой, состоящая из 'Scale' и неотрицательный числовой вектор длины K, где K является количеством столбцов в X. Программное обеспечение масштабирует каждое различие между обучением и данными о запросе с помощью соответствующего элемента Scale. Этот аргумент допустим, только если 'Distance' является 'seuclidean'.

Пример: 'Scale',quantile(X,0.75) - quantile(X,0.25)

Типы данных: single | double

Для самых близких соседних искателей Используя Kd-дерево

свернуть все

Максимальное количество точек данных в каждой вершине d-дерева K, заданного как пара, разделенная запятой, состоящая из 'BucketSize' и положительного целого числа.

Этот аргумент допустим только, когда вы создаете объект модели KDTreeSearcher.

Пример: 'BucketSize',10

Типы данных: single | double

Выходные аргументы

свернуть все

Самый близкий соседний искатель, возвращенный как объект модели ExhaustiveSearcher или объект модели KDTreeSearcher.

Если вы создаете самый близкий соседний объект модели искателя, можно найти соседние точки в данных тренировки к данным о запросе путем выполнения самого близкого соседнего поиска с помощью knnsearch или поиска радиуса использование rangesearch.

Представленный в R2010a