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

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

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 имеет n строки, каждая из которых соответствует наблюдению (то есть образцу или примеру), и K столбцов, каждый из которых соответствует предиктору (то есть функции).

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

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: NS = createns(X,'Distance','mahalanobis') создает ExhaustiveSearcher объект модели, который использует метрику расстояния Махаланобиса при поиске ближайших соседей.
Для исчерпывающих и Kd-Tree ближайших соседних искателей

свернуть все

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

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

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

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

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

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

свернуть все

Ковариационная матрица для метрики расстояния Махаланобиса, заданная как разделенная разделенными запятой парами, состоящая из '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-Tree

свернуть все

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

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

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

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

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

свернуть все

Ближайший соседний искатель, возвращается как ExhaustiveSearcher объект модели или KDTreeSearcher объект модели.

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

Введенный в R2010a