templateKNN

k - шаблон классификатора по ближайшему соседу

Описание

пример

t = templateKNN() возвращает шаблон k-ближайших соседей (KNN), подходящий для обучения ансамблей или моделей выхода кода с исправлением ошибок (ECOC) мультикласса.

Если вы задаете шаблон по умолчанию, то во время обучения программное обеспечение использует значения по умолчанию для всех входных параметров.

Задайте t как учащийся в fitcensemble или fitcecoc.

пример

t = templateKNN(Name,Value) создает шаблон с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".

Например, можно задать метод поиска по ближайшему соседу, количество ближайших соседей для поиска или метрику расстояния.

Если вы отображаете t в Командном окне, затем все опции появляются пустыми ([]), кроме тех, которые вы задаете используя аргументы пары "имя-значение". Во время обучения программа использует значения по умолчанию для пустых опций.

Примеры

свернуть все

Создайте шаблон k-ближайших соседей nondefault для использования в fitcensemble.

Загрузите набор данных радужки Фишера.

load fisheriris

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

t = templateKNN('NumNeighbors',5,'Standardize',1)
t = 
Fit template for classification KNN.

       NumNeighbors: 5
           NSMethod: ''
           Distance: ''
         BucketSize: ''
        IncludeTies: []
     DistanceWeight: []
          BreakTies: []
           Exponent: []
                Cov: []
              Scale: []
    StandardizeData: 1
            Version: 1
             Method: 'KNN'
               Type: 'classification'

Все свойства объекта шаблона пусты, кроме NumNeighbors, Method, StandardizeData, и Type. Когда вы задаете t как учащийся, программа заполняет пустые свойства соответствующими значениями по умолчанию.

Задайте t как слабый ученик классификационного ансамбля.

Mdl = fitcensemble(meas,species,'Method','Subspace','Learners',t);

Отображение ошибки неправильной классификации в выборке (повторная замена).

L = resubLoss(Mdl)
L = 0.0600

Создайте шаблон k-ближайших соседей nondefault для использования в fitcecoc.

Загрузите набор данных радужки Фишера.

load fisheriris

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

t = templateKNN('NumNeighbors',5,'Standardize',1)
t = 
Fit template for classification KNN.

       NumNeighbors: 5
           NSMethod: ''
           Distance: ''
         BucketSize: ''
        IncludeTies: []
     DistanceWeight: []
          BreakTies: []
           Exponent: []
                Cov: []
              Scale: []
    StandardizeData: 1
            Version: 1
             Method: 'KNN'
               Type: 'classification'

Все свойства объекта шаблона пусты, кроме NumNeighbors, Method, StandardizeData, и Type. Когда вы задаете t как учащийся, программа заполняет пустые свойства соответствующими значениями по умолчанию.

Задайте t в качестве двоичного ученика для многоклассовой модели ECOC.

Mdl = fitcecoc(meas,species,'Learners',t);

По умолчанию программное обеспечение обучает Mdl использование проекта кодирования один от одного.

Отображение ошибки неправильной классификации в выборке (повторная замена).

L = resubLoss(Mdl,'LossFun','classiferror')
L = 0.0467

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

свернуть все

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

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

Пример: 'NumNeighbors',4,'Distance','minkowski' задает шаблон классификатора 4 ближайших соседей с помощью измерения расстояния Минковского.

Алгоритм разрыва связей, используемый predict метод, если несколько классов имеют одинаковую наименьшую стоимость, заданную как разделенная разделенными запятой парами, состоящая из 'BreakTies' и одно из следующих:

  • 'smallest' - Используйте наименьший индекс среди связанных групп.

  • 'nearest' - Используйте класс с ближайшим соседом среди связанных групп.

  • 'random' - Используйте случайный tiebreaker среди связанных групп.

По умолчанию связи возникают, когда несколько классов имеют одинаковое количество ближайших точек среди K ближайшие соседи.

Пример: 'BreakTies','nearest'

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

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

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

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

Вы не можете одновременно задать 'Standardize' и любой из 'Scale' или 'Cov'.

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

Метрика расстояния, заданная как разделенная разделенными запятой парами, состоящая из 'Distance' и допустимое имя метрики расстояния или указатель на функцию. Допустимые имена метрики расстояния зависят от вашего выбора метода neighbor-searcher (см NSMethod).

NSMethodИмена метрических расстояний
exhaustiveЛюбая метрика расстояния ExhaustiveSearcher
kdtree'cityblock', 'chebychev', 'euclidean', или 'minkowski'

Эта таблица включает действительные метрики расстояния ExhaustiveSearcher.

Имена метрических расстоянийОписание
'cityblock'Расстояние между блоками.
'chebychev'Расстояние Чебычева (максимальное различие координат).
'correlation'Один минус выборка линейной корреляции между наблюдениями (рассматривается как последовательности значений).
'cosine'Один минус косинус включенного угла между наблюдениями (обрабатывается как векторы).
'euclidean'Евклидово расстояние.
'hamming'Расстояние Хемминга, процент разных координат.
'jaccard'Один минус коэффициент Жаккара, процент ненулевых координат, которые различаются.
'mahalanobis'Расстояние Махаланобиса, вычисленное с помощью положительной определенной ковариационной матрицы C. Значение по умолчанию C - выборочная ковариационная матрица X, в расчете на cov(X,'omitrows'). Чтобы задать другое значение для C, используйте 'Cov' аргумент пары "имя-значение".
'minkowski'Расстояние Минковского. Экспонента по умолчанию 2. Чтобы задать другую экспоненту, используйте 'Exponent' аргумент пары "имя-значение".
'seuclidean'Стандартизированное евклидово расстояние. Каждое различие координат между X и точка запроса масштабируется, что означает деление на значение шкалы S. Значение по умолчанию S - стандартное отклонение, вычисленное из X,   S = std(X,'omitnan'). Чтобы задать другое значение для S, используйте Scale аргумент пары "имя-значение".
'spearman'Один минус выборки корреляции ранга Спирмана между наблюдениями (рассматриваются как последовательности значений).
distfun

Указатель на функцию расстояния. distfun имеет форму

function D2 = distfun(ZI,ZJ)
% calculation of  distance
...
где

  • ZI является 1-by- N вектор, содержащий одну строку X или Y.

  • ZJ является M2-by- N матрица, содержащая несколько строк X или Y.

  • D2 является M2-by- 1 вектор расстояний, и D2(k) - расстояние между наблюдениями ZI и ZJ(k,:).

Если вы задаете CategoricalPredictors как 'all', тогда метрика расстояния по умолчанию 'hamming'. В противном случае метрика расстояния по умолчанию является 'euclidean'.

Определения см. в разделе Метрики расстояния.

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

Типы данных: char | string | function_handle

Функция взвешивания расстояния, заданная как разделенная разделенными запятой парами, состоящая из 'DistanceWeight' и указатель на функцию или одно из значений в этой таблице.

ЗначениеОписание
'equal'Без взвешивания
'inverse'Вес 1/расстояние
'squaredinverse'Вес 1/расстояние2
fcnfcn является функцией, которая принимает матрицу неотрицательных расстояний и возвращает матрицу того же размера, содержащую неотрицательные веса расстояний. Для примера, 'squaredinverse' эквивалентно @(d)d.^(-2).

Пример: 'DistanceWeight','inverse'

Типы данных: char | string | function_handle

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

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

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

Флаг включения галстука, заданный как разделенная разделенными запятой парами, состоящая из 'IncludeTies' и логическое значение, указывающее, predict ли включает все соседи, значения расстояния которых равны Kсамое маленькое расстояние. Если IncludeTies является true, predict включает всех этих соседей. В противном случае predict использует точно K соседи.

Пример: 'IncludeTies',true

Типы данных: logical

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

  • 'kdtree' - Создает и использует kd-дерево для поиска ближайших соседей. 'kdtree' действителен, когда метрика расстояния является одной из следующих:

    • 'euclidean'

    • 'cityblock'

    • 'minkowski'

    • 'chebychev'

  • 'exhaustive' - Использует алгоритм исчерпывающего поиска. При предсказании класса новой точки xnewпрограмма вычисляет значения расстояния от всех точек в X на xnew найти ближайших соседей.

Значение по умолчанию является 'kdtree' когда X имеет 10 или меньше столбцов, X не является разреженным или gpuArray, и метрика расстояния является 'kdtree' тип; в противном случае 'exhaustive'.

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

Количество ближайших соседей в X поиск для классификации каждой точки при прогнозировании, заданный как разделенная разделенными запятой парами, состоящая из 'NumNeighbors' и положительное целое значение.

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

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

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

Вы не можете одновременно задать 'Standardize' и любой из 'Scale' или 'Cov'.

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

Флаг для стандартизации предикторов, заданный как разделенная разделенными запятой парами, состоящая из 'Standardize' и true (1) или false (0).

Если вы задаете 'Standardize',true, затем программное обеспечение центрирует и масштабирует каждый столбец данных предиктора (X) средним значением столбца и стандартным отклонением, соответственно.

Программа не стандартизирует категориальные предикторы и выдает ошибку, если все предикторы категоричны.

Вы не можете одновременно задать 'Standardize',1 и любой из 'Scale' или 'Cov'.

Это хорошая практика, чтобы стандартизировать данные предиктора.

Пример: 'Standardize',true

Типы данных: logical

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

свернуть все

k шаблон классификации NN, подходящий для обучения ансамблей или многоклассовых моделей выходного кода с исправлением ошибок (ECOC), возвращаемый в качестве объекта шаблона. Передайте t кому fitcensemble или fitcecoc чтобы указать, как создать классификатор KNN для модели ансамбля или ECOC, соответственно.

Если вы отображаете t в Командное окно, затем все, не заданные опции появляются пустыми ([]). Однако во время обучения программа заменяет пустые опции соответствующими значениями по умолчанию.

Введенный в R2014a