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 имя аргумента и 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