KDTreeSearcher

Создайте d-дерево K самый близкий соседний искатель

Описание

KDTreeSearcher объекты модели хранят результаты самого близкого соседнего поиска, который использует алгоритм d-дерева K. Результаты включают обучающие данные, метрику расстояния и ее параметры и максимальное количество точек данных в каждой вершине (то есть, размер блока). Алгоритм d-дерева K делит n-by-K набор данных путем рекурсивного разделения точек n в K - мерное пространство в двоичное дерево.

Если вы создаете KDTreeSearcher объект модели, можно искать сохраненное дерево, чтобы найти все соседние точки к данным о запросе путем выполнения самого близкого соседнего поиска с помощью knnsearch или поиск радиуса использование rangesearch. Алгоритм d-дерева K более эффективен, чем алгоритм исчерпывающего поиска, когда K мал (то есть, K ≤ 10), обучение и наборы запроса не разреженны, и обучение и запрашивают наборы, имеют много наблюдений.

Создание

Используйте любого createns функционируйте или KDTreeSearcher функция (описанный здесь), чтобы создать KDTreeSearcher объект модели. Обе функции используют тот же синтаксис за исключением того, что createns функция имеет 'NSMethod' аргумент пары "имя-значение", который вы используете, чтобы выбрать самый близкий соседний метод поиска. createns функция также создает ExhaustiveSearcher объект. Задайте 'NSMethod','kdtree' создать KDTreeSearcher объект. Значением по умолчанию является 'kdtree' если K ≤ 10, обучающие данные не разреженны, и метрика расстояния является Евклидовым, городским кварталом, Чебычевым или Минковским.

Описание

пример

Mdl = KDTreeSearcher(X) выращивает d-дерево K по умолчанию (Mdl) использование n-by-K числовая матрица обучающих данных (X).

пример

Mdl = KDTreeSearcher(X,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Можно задать максимальное количество точек данных в каждой вершине (то есть, размер блока) и метрика расстояния, и установить метрический параметр расстояния (DistParameterСвойство. Например, KDTreeSearcher(X,'Distance','minkowski','BucketSize',10) задает, чтобы использовать расстояние Минковскего при поиске самых близких соседей и использовать 10 для размера блока. Задавать DistParameter, используйте P аргумент пары "имя-значение".

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

развернуть все

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

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

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

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

Пример: 'Distance','minkowski','P',3,'BucketSize',10 задает, чтобы использовать следующее при поиске самых близких соседей: расстояние Минковскего, 3 для метрической экспоненты расстояния Минковскего и 10 для размера блока.

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

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

Для получения дополнительной информации смотрите Метрики Расстояния.

Программное обеспечение не использует метрику расстояния в создании KDTreeSearcher объект модели, таким образом, можно изменить метрику расстояния при помощи записи через точку после создания объекта.

Пример: 'Distance','minkowski'

Экспонента для метрики расстояния Минковскего, заданной как разделенная запятой пара, состоящая из 'P' и положительная скалярная величина. Этот аргумент допустим только если 'Distance' 'minkowski'.

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

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

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

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

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

Свойства

развернуть все

Это свойство доступно только для чтения.

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

Входной параметр X из createns или KDTreeSearcher наборы это свойство.

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

Метрика расстояния использовала, когда вы вызываете knnsearch или rangesearch найти самых близких соседей к точкам будущего запроса, заданным как 'chebychev', 'cityblock', 'euclidean', или 'minkowski'.

'Distance' аргумент пары "имя-значение" createns или KDTreeSearcher наборы это свойство.

Программное обеспечение не использует метрику расстояния в создании KDTreeSearcher объект модели, таким образом, можно изменить его при помощи записи через точку.

Метрические значения параметров расстояния, заданные как пустой ([]) или положительная скалярная величина.

Если Distance 'minkowski', затем DistParameter экспонента в формуле расстояния Минковскего. В противном случае, DistParameter [], указание, что заданная метрическая формула расстояния не имеет никаких параметров.

'P' аргумент пары "имя-значение" createns или KDTreeSearcher наборы это свойство.

Можно изменить DistParameter при помощи записи через точку, например, Mdl.DistParameter = PNew, где PNew положительная скалярная величина.

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

Это свойство доступно только для чтения.

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

'BucketSize' аргумент пары "имя-значение" createns или KDTreeSearcher наборы это свойство.

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

Функции объекта

knnsearchНайдите k - ближайших соседей с помощью объекта искателя
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.

Загрузите ирисовые данные Фишера. Фокусируйтесь на лепестковых размерностях.

load fisheriris
X = meas(:,[3 4]); % Predictors

Вырастите двумерное Kd-дерево с помощью createns и обучающие данные. Задайте метрику расстояния Минковскего.

Mdl = createns(X,'Distance','Minkowski')
Mdl = 
  KDTreeSearcher with properties:

       BucketSize: 50
         Distance: 'minkowski'
    DistParameter: 2
                X: [150x2 double]

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

Доступ к свойствам Mdl при помощи записи через точку. Например, используйте Mdl.DistParameter получить доступ к экспоненте расстояния Минковскего.

Mdl.DistParameter
ans = 2

Можно передать данные о запросе и Mdl к:

  • knnsearch найти индексы и расстояния самых близких соседей

  • rangesearch найти индексы всех самых близких соседей на расстоянии, которое вы задаете

Создайте KDTreeSearcher объект модели и изменяет Distance свойство при помощи записи через точку.

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

load fisheriris
X = meas;

Вырастите четырехмерное Kd-дерево по умолчанию с помощью целого набора данных в качестве обучающих данных.

Mdl = KDTreeSearcher(X)
Mdl = 
  KDTreeSearcher with properties:

       BucketSize: 50
         Distance: 'euclidean'
    DistParameter: []
                X: [150x4 double]

Укажите, что соседний искатель использует метрику Минковскего, чтобы вычислить расстояния между данными о запросе и обучением.

Mdl.Distance = 'minkowski'
Mdl = 
  KDTreeSearcher with properties:

       BucketSize: 50
         Distance: 'minkowski'
    DistParameter: 2
                X: [150x4 double]

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

Вырастите Kd-дерево самый близкий соседний объект искателя при помощи createns функция. Передайте объект и запросите данные к knnsearch функционируйте, чтобы найти k - ближайших соседей.

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

load fisheriris

Удалите пять ирисовых диафрагм случайным образом из данных о предикторе, чтобы использовать в качестве набора запроса.

rng(1);                     % For reproducibility
n = size(meas,1);           % Sample size
qIdx = randsample(n,5);     % Indices of query data
tIdx = ~ismember(1:n,qIdx); % Indices of training data
Q = meas(qIdx,:);
X = meas(tIdx,:);

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

Mdl = createns(X,'Distance','minkowski')
Mdl = 
  KDTreeSearcher with properties:

       BucketSize: 50
         Distance: 'minkowski'
    DistParameter: 2
                X: [145x4 double]

Поскольку X имеет четыре столбца, и метрикой расстояния является Минковский, createns создает KDTreeSearcher объект модели по умолчанию. Экспонентой расстояния Минковскего является 2 по умолчанию.

Найдите индексы обучающих данных (Mdl.X) это - два самых близких соседа каждой точки в данных о запросе (Q).

IdxNN = knnsearch(Mdl,Q,'K',2)
IdxNN = 5×2

    17     4
     6     2
     1    12
    89    66
   124   100

Каждая строка IdxNN соответствует наблюдению данных о запросе, и порядок следования столбцов соответствует порядку самых близких соседей относительно возрастающего расстояния. Например, на основе расстояния Минковскего, второго самого близкого соседа Q(3,:) X(12,:).

Расширенные возможности

Введен в R2010a