createns

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

Описание

пример

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

Подготовьте исчерпывающего самого близкого соседнего искателя, использующего обучающие данные. Задайте расстояние 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 имя аргумента и 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