ClassificationKNN

k- соседняя классификация

Описание

ClassificationKNN модель классификации ближайшего соседа, в которой можно изменить и метрику расстояния и количество самых близких соседей. Поскольку ClassificationKNN классификатор хранит обучающие данные, можно использовать модель, чтобы вычислить предсказания перезамены. В качестве альтернативы используйте модель, чтобы классифицировать новые наблюдения с помощью predict метод.

Создание

Создайте ClassificationKNN использование модели fitcknn.

Свойства

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

Свойства KNN

Повреждающий связь алгоритм используется predict когда несколько классов имеют ту же самую маленькую стоимость в виде одного из следующего:

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

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

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

По умолчанию связи происходят, когда несколько классов имеют то же количество самых близких точек среди k самые близкие соседи. BreakTies применяется когда IncludeTies false.

Измените BreakTies использование записи через точку: mdl.BreakTies = newBreakTies.

Метрика расстояния в виде вектора символов или указателя на функцию. Позволенные значения зависят от NSMethod свойство.

NSMethodПозволенная метрика расстояния
'exhaustive'Любая метрика расстояния ExhaustiveSearcher
'kdtree''cityblock', 'chebychev', 'euclidean', или 'minkowski'

В следующей таблице перечислены ExhaustiveSearcher метрики расстояния.

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

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

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

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

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

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

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

Измените Distance использование записи через точку: mdl.Distance = newDistance.

Если NSMethod 'kdtree', можно использовать запись через точку, чтобы изменить Distance только для метрик 'cityblock', 'chebychev', 'euclidean', и 'minkowski'.

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

Функция взвешивания расстояния в виде одного из значений в этой таблице.

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

Измените DistanceWeight использование записи через точку: mdl.DistanceWeight = newDistanceWeight.

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

Параметр для метрики расстояния в виде одного из значений описан в этой таблице.

Метрика расстоянияПараметр
'mahalanobis'Положительная определенная ковариационная матрица C
'minkowski'Экспонента расстояния Минковскего, положительная скалярная величина
'seuclidean'Вектор из положительных значений шкалы с длиной равняется количеству столбцов X

Для любой другой метрики расстояния, значения DistParameter должен быть [].

Можно изменить DistParameter использование записи через точку: mdl.DistParameter = newDistParameter. Однако, если Distance 'mahalanobis' или 'seuclidean', затем вы не можете изменить DistParameter.

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

Свяжите флаг включения, указывающий ли predict включает всех соседей, значения расстояния которых равны k th наименьшее расстояние в виде false или true. Если IncludeTies true, predict включает всех этих соседей. В противном случае, predict использование точно соседи k (см. BreakTies свойство.

Измените IncludeTies использование записи через точку: mdl.IncludeTies = newIncludeTies.

Типы данных: логический

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

Самый близкий соседний метод поиска в виде любого 'kdtree' или 'exhaustive'.

  • 'kdtree' — Создает и использует Kd-дерево, чтобы найти самых близких соседей.

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

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

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

Измените NumNeighbors использование записи через точку: mdl.NumNeighbors = newNumNeighbors.

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

Другие свойства классификации

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

Категориальные индексы предиктора в виде вектора из положительных целых чисел. CategoricalPredictors содержит значения индекса, указывающие, что соответствующие предикторы являются категориальными. Значения индекса между 1 и p, где p количество предикторов, используемых, чтобы обучить модель. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

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

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

Имена классов в обучающих данных Y с копиями, удаленными в виде категориального или символьного массива, логического или числового вектора или массива ячеек из символьных векторов. ClassNames имеет совпадающий тип данных как Y. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)

Типы данных: categorical | char | logical | single | double | cell

Стоимость misclassification точки в виде квадратной матрицы. Cost(i,j) стоимость классификации точки в класс j если его истинным классом является i (то есть, строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу). Порядок строк и столбцов в Cost соответствует порядку классов в ClassNames. Количество строк и столбцов в Cost количество уникальных классов в ответе.

По умолчанию, Cost(i,j) = 1 если i ~= j, и Cost(i,j) = 0 если i = j. Другими словами, стоимостью является 0 для правильной классификации и 1 для неправильной классификации.

Измените Cost матрица с помощью записи через точку: mdl.Cost = costMatrix.

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

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

Расширенный предиктор называет в виде массива ячеек из символьных векторов.

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

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

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

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

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

Предиктор означает в виде числового вектора из длины numel(PredictorNames).

Если вы не стандартизируете mdl когда обучение использование модели fitcknn, затем Mu isempty).

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

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

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

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

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

Переменный предиктор называет в виде массива ячеек из символьных векторов. Имена переменных находятся в том же порядке, в котором они появляются в обучающих данных X.

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

Априорные вероятности для каждого класса в виде числового вектора. Порядок элементов в Prior соответствует порядку классов в ClassNames.

Добавьте или измените Prior вектор с помощью записи через точку: mdl.Prior = priorVector.

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

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

Имя переменной отклика в виде вектора символов.

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

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

Строки исходных обучающих данных, используемых в подборе кривой ClassificationKNN модель в виде логического вектора. Это свойство пусто, если все строки используются.

Типы данных: логический

Выиграйте преобразование или в виде вектора символов или в виде указателя на функцию.

Эта таблица суммирует доступные векторы символов.

ЗначениеОписание
"doublelogit"1/(1 + e–2x)
"invlogit"журнал (x / (1 – x))
"ismax"Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к 0
"logit"1/(1 + ex)
"none" или "identity"x (никакое преобразование)
"sign"– 1 для x <0
0 для x = 0
1 для x> 0
"symmetric"2x – 1
"symmetricismax"Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1
"symmetriclogit"2/(1 + ex) – 1

Для MATLAB® функционируйте или функция, которую вы задаете, используют ее указатель на функцию для счета, преобразовывают. Указатель на функцию должен принять матрицу (исходные баллы) и возвратить матрицу, одного размера (преобразованные баллы).

Измените ScoreTransform использование записи через точку: mdl.ScoreTransform = newScoreTransform.

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

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

Стандартные отклонения предиктора в виде числового вектора из длины numel(PredictorNames).

Если вы не стандартизируете переменные предикторы во время обучения, то Sigma isempty).

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

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

Веса наблюдения в виде вектора из неотрицательных значений с одинаковым числом строк как Y. Каждая запись в W задает относительную важность соответствующего наблюдения в Y.

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

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

Нестандартизированные данные о предикторе в виде числовой матрицы. Каждый столбец X представляет один предиктор (переменная), и каждая строка представляет одно наблюдение.

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

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

Класс помечает в виде категориального или символьного массива, логического или числового вектора или массива ячеек из символьных векторов. Каждое значение в Y наблюдаемая метка класса для соответствующей строки в X.

Y имеет совпадающий тип данных как данные в Y используемый для обучения модель. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)

Типы данных: single | double | logical | char | cell | categorical

Свойства гипероптимизации параметров управления

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

Оптимизация перекрестной проверки гиперпараметров в виде BayesianOptimization возразите или таблица гиперпараметров и присваиваемых значений. Это свойство непусто когда 'OptimizeHyperparameters' аргумент пары "имя-значение" непуст, когда вы создаете использование модели fitcknn. Значение зависит от установки 'HyperparameterOptimizationOptions' аргумент пары "имя-значение", когда вы создаете модель:

  • 'bayesopt' (значение по умолчанию) — Объект класса BayesianOptimization

  • 'gridsearch' или 'randomsearch' — Таблица гиперпараметров используемые, наблюдаемые значения целевой функции (потеря перекрестной проверки), и ранг наблюдений от самого низкого (лучше всего) к (худшему) самому высокому

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

compareHoldoutСравните точность двух моделей классификации с помощью новых данных
crossvalПерекрестный подтвердите модель машинного обучения
edgeРебро k - самый близкий соседний классификатор
gatherСоберите свойства объекта Statistics and Machine Learning Toolbox от графического процессора
limeЛокальные поддающиеся толкованию объяснения модели агностические (LIME)
lossПотеря k - самый близкий соседний классификатор
marginПоле k - самый близкий соседний классификатор
partialDependenceВычислите частичную зависимость
plotPartialDependenceСоздайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP)
predictПредскажите метки с помощью k - самая близкая соседняя модель классификации
resubEdgeРебро классификации перезамены
resubLossПотеря классификации перезамены
resubMarginПоле классификации перезамены
resubPredictКлассифицируйте обучающие данные с помощью обученного классификатора
shapleyШепли оценивает
testckfoldСравните точность двух моделей классификации повторной перекрестной проверкой

Примеры

свернуть все

Обучите классификатор k - ближайших соседей ирисовым данным Фишера, где k, количество самых близких соседей в предикторах, равняется 5.

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

load fisheriris
X = meas;
Y = species;

X числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Y массив ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.

Обучите 5-самый близкий соседний классификатор. Стандартизируйте некатегориальные данные о предикторе.

Mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1)
Mdl = 
  ClassificationKNN
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'setosa'  'versicolor'  'virginica'}
           ScoreTransform: 'none'
          NumObservations: 150
                 Distance: 'euclidean'
             NumNeighbors: 5


  Properties, Methods

Mdl обученный ClassificationKNN классификатор, и некоторые его свойства появляется в Командном окне.

Получить доступ к свойствам Mdl, используйте запись через точку.

Mdl.ClassNames
ans = 3x1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

Mdl.Prior
ans = 1×3

    0.3333    0.3333    0.3333

Mdl.Prior содержит априорные вероятности класса, которые можно задать использование 'Prior' аргумент пары "имя-значение" в fitcknn. Порядок априорных вероятностей класса соответствует порядку классов в Mdl.ClassNames. По умолчанию априорные вероятности являются соответствующими относительными частотами классов в данных.

Можно также сбросить априорные вероятности после обучения. Например, установите априорные вероятности на 0,5, 0.2, и 0.3, соответственно.

Mdl.Prior = [0.5 0.2 0.3];

Можно передать Mdl к predict пометить новые измерения или crossval перекрестный подтверждать классификатор.

Советы

  • compact функция уменьшает размер большинства моделей классификации путем удаления свойств обучающих данных и любых других свойств, которые не требуются, чтобы предсказывать метки новых наблюдений. Поскольку k - самые близкие соседние модели классификации требуют, чтобы все обучающие данные предсказали метки, вы не можете уменьшать размер ClassificationKNN модель.

Альтернативная функциональность

knnsearch находит k - самые близкие соседи точек. rangesearch находит все точки на фиксированном расстоянии. Можно использовать эти функции для классификации, как показано в Классифицируют Данные о Запросе. Если вы хотите выполнить классификацию, то использование ClassificationKNN модели могут быть более удобными, потому что можно обучить классификатор за один шаг (использование fitcknn) и классифицируйте на другие шаги (использование predict). В качестве альтернативы можно обучить k - самая близкая соседняя модель классификации использование одной из опций перекрестной проверки в вызове fitcknn. В этом случае, fitcknn возвращает ClassificationPartitionedModel перекрестный подтвержденный объект модели.

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

Представленный в R2012a