Подходящий k - самый близкий соседний классификатор
возвращает k - самая близкая соседняя классификация, основанная на модели на входных переменных (также известный как предикторы, функции или атрибуты) в таблице Mdl
= fitcknn(Tbl
,ResponseVarName
)Tbl
и выход (ответ) Tbl.ResponseVarName
.
подбирает модель с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение", с помощью любого из предыдущих синтаксисов. Например, можно задать повреждающий связь алгоритм, метрику расстояния или веса наблюдения.Mdl
= fitcknn(___,Name,Value
)
Обучите классификатор 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
перекрестный подтверждать классификатор.
Загрузите ирисовый набор данных Фишера.
load fisheriris
X = meas;
Y = species;
X
числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Y
массив ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.
Обучите 3-самый близкий соседний классификатор с помощью метрики Минковскего. Чтобы использовать метрику Минковскего, необходимо использовать исчерпывающего искателя. Это - хорошая практика, чтобы стандартизировать некатегориальные данные о предикторе.
Mdl = fitcknn(X,Y,'NumNeighbors',3,... 'NSMethod','exhaustive','Distance','minkowski',... 'Standardize',1);
Mdl
ClassificationKNN
классификатор.
Можно исследовать свойства Mdl
путем двойного клика по Mdl
в окне Workspace. Это открывает Редактора переменных.
Обучите классификатор k - ближайших соседей с помощью расстояния хи-квадрата.
Загрузите ирисовый набор данных Фишера.
load fisheriris X = meas; % Predictors Y = species; % Response
Расстояние хи-квадрата между j-dimensional точками x и z
где вес, сопоставленный с размерностью j.
Задайте функцию расстояния хи-квадрата. Функция расстояния должна:
Возьмите одну строку X
, например, x
, и матричный Z
.
Сравните x
к каждой строке Z
.
Возвратите векторный D
из длины , где количество строк Z
. Каждый элемент D
расстояние между наблюдением, соответствующим x
и наблюдения, соответствующие каждой строке Z
.
chiSqrDist = @(x,Z,wt)sqrt((bsxfun(@minus,x,Z).^2)*wt);
Этот пример использует произвольные веса для рисунка.
Обучите 3-самый близкий соседний классификатор. Это - хорошая практика, чтобы стандартизировать некатегориальные данные о предикторе.
k = 3; w = [0.3; 0.3; 0.2; 0.2]; KNNMdl = fitcknn(X,Y,'Distance',@(x,Z)chiSqrDist(x,Z,w),... 'NumNeighbors',k,'Standardize',1);
KNNMdl
ClassificationKNN
классификатор.
Крест подтверждает классификатор KNN с помощью 10-кратной перекрестной проверки по умолчанию. Исследуйте ошибку классификации.
rng(1); % For reproducibility
CVKNNMdl = crossval(KNNMdl);
classError = kfoldLoss(CVKNNMdl)
classError = 0.0600
CVKNNMdl
ClassificationPartitionedModel
классификатор.
Сравните классификатор с тем, который использует различную схему взвешивания.
w2 = [0.2; 0.2; 0.3; 0.3]; CVKNNMdl2 = fitcknn(X,Y,'Distance',@(x,Z)chiSqrDist(x,Z,w2),... 'NumNeighbors',k,'KFold',10,'Standardize',1); classError2 = kfoldLoss(CVKNNMdl2)
classError2 = 0.0400
Вторая схема взвешивания дает к классификатору, который имеет лучшую эффективность из выборки.
В этом примере показано, как оптимизировать гиперпараметры автоматически с помощью fitcknn
. Пример использует ирисовые данные Фишера.
Загрузите данные.
load fisheriris
X = meas;
Y = species;
Найдите гиперпараметры, которые минимизируют пятикратную потерю перекрестной проверки при помощи автоматической гипероптимизации параметров управления.
Для воспроизводимости установите случайный seed и используйте 'expected-improvement-plus'
функция захвата.
rng(1) Mdl = fitcknn(X,Y,'OptimizeHyperparameters','auto',... 'HyperparameterOptimizationOptions',... struct('AcquisitionFunctionName','expected-improvement-plus'))
|=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | NumNeighbors | Distance | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 1 | Best | 0.026667 | 2.5484 | 0.026667 | 0.026667 | 30 | cosine | | 2 | Accept | 0.04 | 0.5574 | 0.026667 | 0.027197 | 2 | chebychev | | 3 | Accept | 0.19333 | 0.24336 | 0.026667 | 0.030324 | 1 | hamming | | 4 | Accept | 0.33333 | 0.23507 | 0.026667 | 0.033313 | 31 | spearman | | 5 | Best | 0.02 | 0.32845 | 0.02 | 0.020648 | 6 | cosine | | 6 | Accept | 0.073333 | 0.15227 | 0.02 | 0.023082 | 1 | correlation | | 7 | Accept | 0.06 | 0.15128 | 0.02 | 0.020875 | 2 | cityblock | | 8 | Accept | 0.04 | 0.12381 | 0.02 | 0.020622 | 1 | euclidean | | 9 | Accept | 0.24 | 0.22216 | 0.02 | 0.020562 | 74 | mahalanobis | | 10 | Accept | 0.04 | 0.14748 | 0.02 | 0.020649 | 1 | minkowski | | 11 | Accept | 0.053333 | 0.24116 | 0.02 | 0.020722 | 1 | seuclidean | | 12 | Accept | 0.19333 | 0.1304 | 0.02 | 0.020701 | 1 | jaccard | | 13 | Accept | 0.04 | 0.11448 | 0.02 | 0.029203 | 1 | cosine | | 14 | Accept | 0.04 | 0.11529 | 0.02 | 0.031888 | 75 | cosine | | 15 | Accept | 0.04 | 0.10525 | 0.02 | 0.020076 | 1 | cosine | | 16 | Accept | 0.093333 | 0.13009 | 0.02 | 0.020073 | 75 | euclidean | | 17 | Accept | 0.093333 | 0.12495 | 0.02 | 0.02007 | 75 | minkowski | | 18 | Accept | 0.1 | 0.12216 | 0.02 | 0.020061 | 75 | chebychev | | 19 | Accept | 0.15333 | 0.12172 | 0.02 | 0.020044 | 75 | seuclidean | | 20 | Accept | 0.1 | 0.12481 | 0.02 | 0.020044 | 75 | cityblock | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | NumNeighbors | Distance | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.033333 | 0.11842 | 0.02 | 0.020046 | 75 | correlation | | 22 | Accept | 0.033333 | 0.13893 | 0.02 | 0.02656 | 9 | cosine | | 23 | Accept | 0.033333 | 0.12274 | 0.02 | 0.02854 | 9 | cosine | | 24 | Accept | 0.02 | 0.1143 | 0.02 | 0.028607 | 1 | chebychev | | 25 | Accept | 0.02 | 0.1075 | 0.02 | 0.022264 | 1 | chebychev | | 26 | Accept | 0.02 | 0.12856 | 0.02 | 0.021439 | 1 | chebychev | | 27 | Accept | 0.02 | 0.12044 | 0.02 | 0.020999 | 1 | chebychev | | 28 | Accept | 0.66667 | 0.1492 | 0.02 | 0.020008 | 75 | hamming | | 29 | Accept | 0.04 | 0.13944 | 0.02 | 0.020008 | 12 | correlation | | 30 | Best | 0.013333 | 0.12897 | 0.013333 | 0.013351 | 6 | euclidean |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 48.5619 seconds Total objective function evaluation time: 7.3085 Best observed feasible point: NumNeighbors Distance ____________ _________ 6 euclidean Observed objective function value = 0.013333 Estimated objective function value = 0.013351 Function evaluation time = 0.12897 Best estimated feasible point (according to models): NumNeighbors Distance ____________ _________ 6 euclidean Estimated objective function value = 0.013351 Estimated function evaluation time = 0.16507
Mdl = ClassificationKNN ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 HyperparameterOptimizationResults: [1x1 BayesianOptimization] Distance: 'euclidean' NumNeighbors: 6 Properties, Methods
Tbl
— Выборочные данныеВыборочные данные раньше обучали модель в виде таблицы. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору. Опционально, Tbl
может содержать один дополнительный столбец для переменной отклика. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.
Если Tbl
содержит переменную отклика, и вы хотите использовать все остающиеся переменные в Tbl
как предикторы, затем задайте переменную отклика при помощи ResponseVarName
.
Если Tbl
содержит переменную отклика, и вы хотите использовать только подмножество остающихся переменных в Tbl
как предикторы, затем задайте формулу при помощи formula
.
Если Tbl
не содержит переменную отклика, затем задает переменную отклика при помощи Y
. Длина переменной отклика и количество строк в Tbl
должно быть равным.
Типы данных: table
ResponseVarName
— Имя переменной откликаTbl
Имя переменной отклика в виде имени переменной в Tbl
.
Необходимо задать ResponseVarName
как вектор символов или строковый скаляр. Например, если переменная отклика Y
хранится как Tbl.Y
, затем задайте его как "Y"
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая Y
, как предикторы, когда обучение модель.
Переменная отклика должна быть категориальным, символом или массивом строк; логический или числовой вектор; или массив ячеек из символьных векторов. Если Y
символьный массив, затем каждый элемент переменной отклика должен соответствовать одной строке массива.
Хорошая практика должна задать порядок классов при помощи ClassNames
аргумент значения имени.
Типы данных: char |
string
formula
— Объяснительная модель переменной отклика и подмножество переменных предикторовОбъяснительная модель переменной отклика и подмножество переменных предикторов в виде вектора символов или строкового скаляра в форме "Y~x1+x2+x3"
. В этой форме, Y
представляет переменную отклика и x1
x2
, и x3
представляйте переменные предикторы.
Задавать подмножество переменных в Tbl
как предикторы для обучения модель, используйте формулу. Если вы задаете формулу, то программное обеспечение не использует переменных в Tbl
это не появляется в formula
.
Имена переменных в формуле должны быть оба именами переменных в Tbl
(Tbl.Properties.VariableNames
) и допустимый MATLAB® идентификаторы. Можно проверить имена переменных в Tbl
при помощи isvarname
функция. Если имена переменных не допустимы, то можно преобразовать их при помощи matlab.lang.makeValidName
функция.
Типы данных: char |
string
Y
— Метки классаКласс помечает в виде категориального, символа, или массива строк, логического или числового вектора или массива ячеек из символьных векторов. Каждая строка Y
представляет классификацию соответствующей строки X
.
Программное обеспечение рассматривает NaN
, ''
(пустой символьный вектор), ""
(пустая строка), <missing>
, и <undefined>
значения в Y
быть отсутствующими значениями. Следовательно, программное обеспечение не обучает наблюдения использования с недостающим ответом.
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
X
— Данные о предиктореДанные о предикторе в виде числовой матрицы.
Каждая строка соответствует одному наблюдению (также известный как экземпляр или пример), и каждый столбец соответствует одному переменному предиктору (также известный как функцию).
Длина Y
и количество строк X
должно быть равным.
Задавать имена предикторов в порядке их внешнего вида в X
, используйте PredictorNames
аргумент пары "имя-значение".
Типы данных: double |
single
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'NumNeighbors',3,'NSMethod','exhaustive','Distance','minkowski'
задает классификатор для трехсамых близких соседей, использующих самый близкий соседний метод поиска и метрику Минковскего.Примечание
Вы не можете использовать аргумент значения имени перекрестной проверки вместе с 'OptimizeHyperparameters'
аргумент значения имени. Можно изменить перекрестную проверку для 'OptimizeHyperparameters'
только при помощи 'HyperparameterOptimizationOptions'
аргумент значения имени.
BreakTies
— Повреждающий связь алгоритм'smallest'
(значение по умолчанию) | 'nearest'
| 'random'
Повреждающий связь алгоритм используется predict
метод, если несколько классов имеют ту же самую маленькую стоимость в виде разделенной запятой пары, состоящей из 'BreakTies'
и одно из следующего:
'smallest'
— Используйте самый маленький индекс среди связанных групп.
'nearest'
— Используйте класс с самым близким соседом среди связанных групп.
'random'
— Используйте случайное дополнительное время среди связанных групп.
По умолчанию связи происходят, когда несколько классов имеют то же количество самых близких точек среди K
самые близкие соседи.
Пример: 'BreakTies','nearest'
BucketSize
— Максимальные точки данных в узле
(значение по умолчанию) | положительное целочисленное значениеМаксимальное количество точек данных в вершине kd-дерева в виде разделенной запятой пары, состоящей из 'BucketSize'
и положительное целочисленное значение. Этот аргумент значим только когда NSMethod
'kdtree'
.
Пример: 'BucketSize',40
Типы данных: single
| double
CategoricalPredictors
— Категориальный флаг предиктора[]
| 'all'
Категориальный флаг предиктора в виде разделенной запятой пары, состоящей из 'CategoricalPredictors'
и одно из следующего:
'all'
— Все предикторы являются категориальными.
[]
— Никакие предикторы не являются категориальными.
Данные о предикторе для fitcknn
должны быть или все непрерывные или все категориальные.
Если данные о предикторе находятся в таблице (Tbl
), fitcknn
принимает, что переменная является категориальной, если это - логический вектор, категориальный вектор, символьный массив, массив строк или массив ячеек из символьных векторов. Если Tbl
включает и непрерывные и категориальные значения, затем необходимо задать значение 'CategoricalPredictors'
так, чтобы fitcknn
может определить, как обработать все предикторы, или как непрерывные или как категориальные переменные.
Если данные о предикторе являются матрицей (X
), fitcknn
принимает, что все предикторы непрерывны. Идентифицировать все предикторы в X
как категориальные, задайте 'CategoricalPredictors'
как 'all'
.
Когда вы устанавливаете CategoricalPredictors
к 'all'
, Distance
по умолчанию
'hamming'
.
Пример: 'CategoricalPredictors','all'
ClassNames
— Имена классов, чтобы использовать для обученияИмена классов, чтобы использовать для обучения в виде категориального, символа или массива строк; логический или числовой вектор; или массив ячеек из символьных векторов. ClassNames
должен иметь совпадающий тип данных как переменную отклика в Tbl
или Y
.
Если ClassNames
символьный массив, затем каждый элемент должен соответствовать одной строке массива.
Используйте ClassNames
к:
Задайте порядок классов во время обучения.
Задайте порядок любой размерности аргумента ввода или вывода, которая соответствует порядку класса. Например, используйте ClassNames
задавать порядок размерностей Cost
или порядок следования столбцов классификационных оценок, возвращенных predict
.
Выберите подмножество классов для обучения. Например, предположите что набор всех отличных имен классов в Y
["a","b","c"]
. Обучать модель с помощью наблюдений от классов "a"
и "c"
только, задайте "ClassNames",["a","c"]
.
Значение по умолчанию для ClassNames
набор всех отличных имен классов в переменной отклика в Tbl
или Y
.
Пример: "ClassNames",["b","g"]
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
Cost
— Стоимость misclassificationСтоимость misclassification точки в виде разделенной запятой пары, состоящей из 'Cost'
и одно из следующего:
Квадратная матрица, где Cost(i,j)
стоимость классификации точки в класс j
если его истинным классом является i
(т.е. строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу). Чтобы задать класс заказывают для соответствующих строк и столбцов Cost
, дополнительно задайте ClassNames
аргумент пары "имя-значение".
Структуры
наличие двух полей: S.ClassNames
содержа названия группы как переменную того же типа как Y
, и S.ClassificationCosts
содержа матрицу стоимости.
Значением по умолчанию является Cost(i,j)=1
если i~=j
, и Cost(i,j)=0
если i=j
.
Типы данных: single
| double
| struct
Cov
— Ковариационная матрицаcov(X,'omitrows')
(значение по умолчанию) | положительная определенная матрица скалярных значенийКовариационная матрица в виде разделенной запятой пары, состоящей из 'Cov'
и положительная определенная матрица скалярных значений, представляющих ковариационную матрицу при вычислении расстояния Mahalanobis. Этот аргумент только допустим когда 'Distance'
'mahalanobis'
.
Вы не можете одновременно задать 'Standardize'
и любой из 'Scale'
или 'Cov'
.
Типы данных: single
| double
Distance
— Метрика расстояния'cityblock'
| 'chebychev'
| 'correlation'
| 'cosine'
| 'euclidean'
| 'hamming'
| указатель на функцию |...Метрика расстояния в виде разделенной запятой пары, состоящей из 'Distance'
и допустимое метрическое имя расстояния или указатель на функцию. Допустимые метрические имена расстояния зависят от вашего выбора метода соседнего искателя (см. 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 , используйте 'Cov' аргумент пары "имя-значение". |
'minkowski' | Расстояние Минковскего. Экспонентой по умолчанию является 2 . Чтобы задать различную экспоненту, используйте 'Exponent' аргумент пары "имя-значение". |
'seuclidean' | Стандартизированное Евклидово расстояние. Каждое координатное различие между X и точка запроса масштабируется, означая разделенный на значение шкалы S . Значение по умолчанию S стандартное отклонение, вычисленное из X , S = std(X,'omitnan') . Задавать другое значение для S , используйте Scale аргумент пары "имя-значение". |
'spearman' | Один минус порядковая корреляция демонстрационного Копьеносца между наблюдениями (обработанный как последовательности значений). |
@ |
Указатель на функцию расстояния. function D2 = distfun(ZI,ZJ) % calculation of distance ...
|
Если вы задаете CategoricalPredictors
как 'all'
, затем метрикой расстояния по умолчанию является 'hamming'
. В противном случае метрикой расстояния по умолчанию является 'euclidean'
.
Для определений смотрите Метрики Расстояния.
Пример: 'Distance','minkowski'
Типы данных: char |
string
| function_handle
DistanceWeight
— Функция взвешивания расстояния'equal'
(значение по умолчанию) | 'inverse'
| 'squaredinverse'
| указатель на функциюФункция взвешивания расстояния в виде разделенной запятой пары, состоящей из 'DistanceWeight'
и или указатель на функцию или одно из значений в этой таблице.
Значение | Описание |
---|---|
'equal' | Никакое взвешивание |
'inverse' | Вес 1/дистанцировать |
'squaredinverse' | Вес 1/дистанцировать2 |
| fcn функция, которая принимает матрицу неотрицательных расстояний и возвращает матрицу тот же размер, содержащий неотрицательные веса расстояния. Например, 'squaredinverse' эквивалентно @(d)d.^(-2) . |
Пример: 'DistanceWeight','inverse'
Типы данных: char |
string
| function_handle
Exponent
— Экспонента расстояния Минковскего
(значение по умолчанию) | значение положительной скалярной величиныЭкспонента расстояния Минковскего в виде разделенной запятой пары, состоящей из 'Exponent'
и значение положительной скалярной величины. Этот аргумент только допустим когда 'Distance'
'minkowski'
.
Пример: 'Exponent',3
Типы данных: single
| double
IncludeTies
— Свяжите флаг включенияfalse
(значение по умолчанию) | true
Свяжите флаг включения в виде разделенной запятой пары, состоящей из 'IncludeTies'
и логическое значение, указывающее, ли predict
включает всех соседей, значения расстояния которых равны K
th наименьшее расстояние. Если IncludeTies
true
, predict
включает всех этих соседей. В противном случае, predict
использование точно K
соседи.
Пример: 'IncludeTies',true
Типы данных: логический
NSMethod
— Самый близкий соседний метод поиска'kdtree'
| 'exhaustive'
Самый близкий соседний метод поиска в виде разделенной запятой пары, состоящей из 'NSMethod'
и 'kdtree'
или 'exhaustive'
.
'kdtree'
— Создает и использует kd-дерево, чтобы найти самых близких соседей. 'kdtree'
допустимо, когда метрика расстояния является одним из следующего:
'euclidean'
'cityblock'
'minkowski'
'chebychev'
'exhaustive'
— Использует алгоритм исчерпывающего поиска. При предсказании класса новой точки xnew
, программное обеспечение вычисляет значения расстояния из всех точек в X
к xnew
найти самых близких соседей.
Значением по умолчанию является 'kdtree'
когда X
имеет 10
или меньше столбцов, X
не разреженно или gpuArray
, и метрикой расстояния является 'kdtree'
ввод; в противном случае, 'exhaustive'
.
Пример: 'NSMethod','exhaustive'
NumNeighbors
— Количество самых близких соседей, чтобы найти
(значение по умолчанию) | положительное целочисленное значениеКоличество самых близких соседей в X
найти для классификации каждой точки при предсказании в виде разделенной запятой пары, состоящей из 'NumNeighbors'
и положительное целочисленное значение.
Пример: 'NumNeighbors',3
Типы данных: single
| double
PredictorNames
— Имена переменного предиктораПеременный предиктор называет в виде массива строк уникальных имен или массива ячеек уникальных векторов символов. Функциональность PredictorNames
зависит от способа, которым вы снабжаете обучающими данными.
Если вы предоставляете X
и Y
, затем можно использовать PredictorNames
присваивать имена к переменным предикторам в X
.
Порядок имен в PredictorNames
должен соответствовать порядку следования столбцов X
. Таким образом, PredictorNames{1}
имя X(:,1)
, PredictorNames{2}
имя X(:,2)
, и так далее. Кроме того, size(X,2)
и numel(PredictorNames)
должно быть равным.
По умолчанию, PredictorNames
{'x1','x2',...}
.
Если вы предоставляете Tbl
, затем можно использовать PredictorNames
выбрать который переменные предикторы использовать в обучении. Таким образом, fitcknn
использование только переменные предикторы в PredictorNames
и переменная отклика во время обучения.
PredictorNames
должно быть подмножество Tbl.Properties.VariableNames
и не может включать имя переменной отклика.
По умолчанию, PredictorNames
содержит имена всех переменных предикторов.
Хорошая практика должна задать предикторы для обучения с помощью любого PredictorNames
или formula
, но не то и другое одновременно.
Пример: "PredictorNames",["SepalLength","SepalWidth","PetalLength","PetalWidth"]
Типы данных: string
| cell
Prior
— Априорные вероятности'empirical'
(значение по умолчанию) | 'uniform'
| вектор из скалярных значений | структураАприорные вероятности для каждого класса в виде разделенной запятой пары, состоящей из 'Prior'
и значение в этой таблице.
Значение | Описание |
---|---|
'empirical' | Априорные вероятности класса являются частотами родственника класса в Y . |
'uniform' | Все априорные вероятности класса равны 1/K, где K является количеством классов. |
числовой вектор | Каждым элементом является априорная вероятность класса. Закажите элементы согласно Mdl .ClassNames или задайте порядок с помощью ClassNames аргумент пары "имя-значение". Программное обеспечение нормирует элементы, таким образом, что они суммируют к 1 . |
структура | Структура
|
Если вы устанавливаете значения для обоих Weights
и Prior
, веса повторно нормированы, чтобы составить в целом значение априорной вероятности в соответствующем классе.
Пример: 'Prior','uniform'
Типы данных: char |
string
| single
| double
| struct
ResponseName
— Имя переменной отклика"Y"
(значение по умолчанию) | вектор символов | строковый скалярИмя переменной отклика в виде вектора символов или строкового скаляра.
Если вы предоставляете Y
, затем можно использовать ResponseName
задавать имя для переменной отклика.
Если вы предоставляете ResponseVarName
или formula
, затем вы не можете использовать ResponseName
.
Пример: "ResponseName","response"
Типы данных: char |
string
Scale
— Шкала расстоянияstd(X,'omitnan')
(значение по умолчанию) | вектор из неотрицательных скалярных значенийШкала расстояния в виде разделенной запятой пары, состоящей из 'Scale'
и вектор, содержащий неотрицательные скалярные значения с длиной, равняется количеству столбцов в X
. Каждое координатное различие между X
и точка запроса масштабируется соответствующим элементом Scale
. Этот аргумент только допустим когда 'Distance'
'seuclidean'
.
Вы не можете одновременно задать 'Standardize'
и любой из 'Scale'
или 'Cov'
.
Типы данных: single
| double
ScoreTransform
— Выиграйте преобразование"none"
(значение по умолчанию) | "doublelogit"
| "invlogit"
| "ismax"
| "logit"
| указатель на функцию |...Выиграйте преобразование в виде вектора символов, строкового скаляра или указателя на функцию.
Эта таблица суммирует доступные векторы символов и строковые скаляры.
Значение | Описание |
---|---|
"doublelogit" | 1/(1 + e–2x) |
"invlogit" | журнал (x / (1 – x)) |
"ismax" | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к 0 |
"logit" | 1/(1 + e–x) |
"none" или "identity" | x (никакое преобразование) |
"sign" | – 1 для x <0 0 для x = 0 1 для x> 0 |
"symmetric" | 2x – 1 |
"symmetricismax" | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1 |
"symmetriclogit" | 2/(1 + e–x) – 1 |
Для функции MATLAB или функции вы задаете, используете ее указатель на функцию для счета, преобразовывают. Указатель на функцию должен принять матрицу (исходные баллы) и возвратить матрицу, одного размера (преобразованные баллы).
Пример: "ScoreTransform","logit"
Типы данных: char |
string
| function_handle
Standardize
— Отметьте, чтобы стандартизировать предикторыfalse
(значение по умолчанию) | true
Отметьте, чтобы стандартизировать предикторы в виде разделенной запятой пары, состоящей из 'Standardize'
и true
(1 ) или
false
(0) .
Если вы устанавливаете 'Standardize',true
, затем центры программного обеспечения и шкалы каждый столбец данных о предикторе (X
) столбцом среднее и стандартное отклонение, соответственно.
Программное обеспечение не стандартизирует категориальные предикторы и выдает ошибку, если все предикторы являются категориальными.
Вы не можете одновременно задать 'Standardize',1
и любой из 'Scale'
или 'Cov'
.
Это - хорошая практика, чтобы стандартизировать данные о предикторе.
Пример: 'Standardize',true
Типы данных: логический
Weights
— Веса наблюденияTbl
Веса наблюдения в виде разделенной запятой пары, состоящей из 'Weights'
и числовой вектор из положительных значений или имя переменной в Tbl
. Программное обеспечение взвешивает наблюдения в каждой строке X
или Tbl
с соответствующим значением в Weights
. Размер Weights
должен равняться количеству строк X
или Tbl
.
Если вы задаете входные данные как таблицу Tbl
, затем Weights
может быть имя переменной в Tbl
это содержит числовой вектор. В этом случае необходимо задать Weights
как вектор символов или строковый скаляр. Например, если вектор весов W
хранится как Tbl.W
, затем задайте его как 'W'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая W
, как предикторы или ответ, когда обучение модель.
Программное обеспечение нормирует Weights
суммировать до значения априорной вероятности в соответствующем классе.
По умолчанию, Weights
единицы (
, где n
,1)n
количество наблюдений в X
или Tbl
.
Типы данных: double |
single
| char
| string
CrossVal
— Флаг перекрестной проверки'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки в виде разделенной запятой пары, состоящей из 'Crossval'
и 'on'
или 'off'
.
Если вы задаете 'on'
, затем программное обеспечение реализует 10-кратную перекрестную проверку.
Чтобы заменить эту установку перекрестной проверки, используйте один из этих аргументов пары "имя-значение": CVPartition
, Holdout
, KFold
, или Leaveout
. Чтобы создать перекрестную подтвержденную модель, можно использовать один аргумент пары "имя-значение" перекрестной проверки за один раз только.
В качестве альтернативы крест подтверждает Mdl
позже использование crossval
метод.
Пример: 'Crossval','on'
CVPartition
— Раздел перекрестной проверки[]
(значение по умолчанию) | cvpartition
объект разделаРаздел перекрестной проверки в виде cvpartition
объект раздела, созданный cvpartition
. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp
.
Holdout
— Часть данных для валидации затяжкиЧасть данных, используемых для валидации затяжки в виде скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p
, затем программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте p*100
% из данных как данные о валидации, и обучают модель с помощью остальной части данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Holdout',0.1
Типы данных: double |
single
KFold
— Количество сгибов
(значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели в виде положительного целочисленного значения, больше, чем 1. Если вы задаете 'KFold',k
, затем программное обеспечение завершает эти шаги:
Случайным образом разделите данные в k
наборы.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k
– 1 набор.
Сохраните k
компактные, обученные модели в k
- 1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'KFold',5
Типы данных: single
| double
Leaveout
— Флаг перекрестной проверки "Пропускает один"'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки "Пропускает один" в виде 'on'
или 'off'
. Если вы задаете 'Leaveout','on'
, затем для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в NumObservations
свойство модели), программное обеспечение завершает эти шаги:
Зарезервируйте одно наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.
Сохраните n компактные, обученные модели в n-by-1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Leaveout','on'
OptimizeHyperparameters
— Параметры, чтобы оптимизировать'none'
(значение по умолчанию) | 'auto'
| 'all'
| массив строк или массив ячеек имеющих право названий параметра | вектор из optimizableVariable
объектыПараметры, чтобы оптимизировать в виде разделенной запятой пары, состоящей из 'OptimizeHyperparameters'
и одно из следующего:
'none'
— Не оптимизировать.
'auto'
— Используйте {'Distance','NumNeighbors'}
.
'all'
— Оптимизируйте все имеющие право параметры.
Массив строк или массив ячеек имеющих право названий параметра.
Вектор из optimizableVariable
объекты, обычно выход hyperparameters
.
Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitcknn
путем варьирования параметров. Для получения информации о потере перекрестной проверки (хотя в различном контексте), смотрите Потерю Классификации. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте HyperparameterOptimizationOptions
пара "имя-значение".
Примечание
Значения 'OptimizeHyperparameters'
замените любые значения, вы задаете использование других аргументов name-value. Например, установка 'OptimizeHyperparameters'
к 'auto'
причины fitcknn
оптимизировать гиперпараметры, соответствующие 'auto'
опция и проигнорировать любые заданные значения для гиперпараметров.
Имеющие право параметры для fitcknn
:
Distance
— fitcknn
поисковые запросы среди 'cityblock'
, 'chebychev'
Корреляция
, 'cosine'
, 'euclidean'
, 'hamming'
, 'jaccard'
, 'mahalanobis'
, 'minkowski'
, 'seuclidean'
, и 'spearman'
.
DistanceWeight
— fitcknn
поисковые запросы среди 'equal'
, 'inverse'
, и 'squaredinverse'
.
Exponent
— fitcknn
поисковые запросы среди положительных вещественных значений, по умолчанию в области значений [0.5,3]
.
NumNeighbors
— fitcknn
поисковые запросы среди положительных целочисленных значений, по умолчанию масштабируемых журналом в области значений [1, max(2,round(NumObservations/2))]
.
Standardize
— fitcknn
поисковые запросы среди значений 'true'
и 'false'
.
Установите параметры не по умолчанию путем передачи вектора из optimizableVariable
объекты, которые имеют значения не по умолчанию. Например,
load fisheriris params = hyperparameters('fitcknn',meas,species); params(1).Range = [1,20];
Передайте params
как значение OptimizeHyperparameters
.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является misclassification уровнем. Чтобы управлять итеративным отображением, установите Verbose
поле 'HyperparameterOptimizationOptions'
аргумент значения имени. Чтобы управлять графиками, установите ShowPlots
поле 'HyperparameterOptimizationOptions'
аргумент значения имени.
Для примера смотрите, Оптимизируют Подходящий Классификатор KNN.
Пример: 'auto'
HyperparameterOptimizationOptions
— Опции для оптимизацииОпции для оптимизации в виде структуры. Этот аргумент изменяет эффект OptimizeHyperparameters
аргумент значения имени. Все поля в структуре являются дополнительными.
Имя поля | Значения | Значение по умолчанию |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Захват функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' и 'randomsearch' , и целая сетка для 'gridsearch' |
MaxTime | Ограничение по времени в виде положительного действительного скаляра. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch' , количество значений в каждой размерности. Значение может быть вектором из положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10
|
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true , это поле строит лучшее наблюдаемое значение целевой функции против номера итерации. Если вы используете Байесовую оптимизацию (Optimizer 'bayesopt' ), затем это поле также строит лучшее предполагаемое значение целевой функции. Лучшие наблюдаемые значения целевой функции и лучше всего оцененные значения целевой функции соответствуют значениям в BestSoFar (observed) и BestSoFar (estim.) столбцы итеративного отображения, соответственно. Можно найти эти значения в свойствах ObjectiveMinimumTrace и EstimatedObjectiveMinimumTrace из Mdl.HyperparameterOptimizationResults . Если проблема включает один или два параметра оптимизации для Байесовой оптимизации, то ShowPlots также строит модель целевой функции против параметров. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранить ли результаты когда Optimizer 'bayesopt' . Если true , это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменной является BayesianOptimization объект. | false |
Verbose | Отображение в командной строке:
Для получения дополнительной информации смотрите | 1
|
UseParallel | Логическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Из-за невоспроизводимости синхронизации параллели, параллельная Байесова оптимизация не обязательно приводит к восстанавливаемым результатам. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию. | false |
Repartition | Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если этим полем является Установка | false |
Используйте не больше, чем одну из следующих трех опций. | ||
CVPartition | cvpartition объект, как создано cvpartition | 'Kfold',5 если вы не задаете поле перекрестной проверки |
Holdout | Скаляр в области значений (0,1) представление части затяжки | |
Kfold | Целое число, больше, чем 1 |
Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Типы данных: struct
Mdl
— Обученный k - самая близкая соседняя модель классификацииClassificationKNN
объект модели | ClassificationPartitionedModel
перекрестный подтвержденный объект моделиОбученный k - самая близкая соседняя модель классификации, возвращенная как ClassificationKNN
объект модели или ClassificationPartitionedModel
перекрестный подтвержденный объект модели.
Если вы устанавливаете какой-либо из аргументов пары "имя-значение" KFold
, Holdout
, CrossVal
, или CVPartition
, затем Mdl
ClassificationPartitionedModel
перекрестный подтвержденный объект модели. В противном случае, Mdl
ClassificationKNN
объект модели.
К ссылочным свойствам Mdl
, используйте запись через точку. Например, чтобы отобразить метрику расстояния в Командном окне, введите Mdl.Distance
.
ClassificationKNN
предсказывает классификацию точки xnew
использование процедуры, эквивалентной этому:
Найдите NumNeighbors
точки в наборе обучающих данных X
это является самым близким к xnew
.
Найдите NumNeighbors
значения отклика Y
к тем самым близким точкам.
Присвойте метку ynew
классификации это имеет самую большую апостериорную вероятность среди значений в
Y
.
Для получения дополнительной информации смотрите Апостериорную вероятность в predict
документация.
После обучения модель можно сгенерировать код C/C++, который предсказывает метки для новых данных. Генерация кода C/C++ требует MATLAB Coder™. Для получения дополнительной информации смотрите Введение в Генерацию кода.
NaNs
или <undefined>
s указывают на недостающие наблюдения. Следующее описывает поведение fitcknn
когда набор данных или веса содержат недостающие наблюдения.
Если любое значение Y
или любой вес отсутствует, затем fitcknn
удаляет те значения из Y
, веса и соответствующие строки X
из данных. Программное обеспечение повторно нормирует веса, чтобы суммировать к 1
.
Если вы задаете, чтобы стандартизировать предикторы ('Standardize',1
) или стандартизированное Евклидово расстояние ('Distance','seuclidean'
) без шкалы, затем fitcknn
удаляет недостающие наблюдения из отдельных предикторов прежде, чем вычислить среднее и стандартное отклонение. Другими словами, реализации программного обеспечения mean
и std
с 'omitnan'
опция на каждом предикторе.
Если вы задаете расстояние Mahalanobis ('Distance','mahalanbois'
) без его ковариационной матрицы, затем fitcknn
удаляет строки X
это содержит по крайней мере одно отсутствующее значение. Другими словами, реализации программного обеспечения cov
с 'omitrows'
опция на матрице предиктора X
.
Предположим, что вы устанавливаете 'Standardize',true
.
Если вы также задаете Prior
или Weights
аргумент пары "имя-значение", затем fitcknn
стандартизирует предикторы с помощью их соответствующих взвешенных средних и взвешенных стандартных отклонений. А именно, fitcknn
стандартизирует предиктор использование j
xjk является наблюдением k (строка) предиктора j (столбец).
Если вы также устанавливаете 'Distance','mahalanobis'
или 'Distance','seuclidean'
, затем вы не можете задать Scale
или Cov
. Вместо этого программное обеспечение:
Вычисляет средние значения и стандартные отклонения каждого предиктора.
Стандартизирует данные с помощью результатов шага 1.
Вычисляет значения параметров расстояния с помощью их соответствующего значения по умолчанию.
Если вы задаете Scale
и любой из Prior
или Weights
, затем программное обеспечение масштабирует наблюдаемые расстояния взвешенными стандартными отклонениями.
Если вы задаете Cov
и любой из Prior
или Weights
, затем программное обеспечение применяет взвешенную ковариационную матрицу к расстояниям. Другими словами,
Несмотря на то, что fitcknn
может обучить мультикласс классификатор KNN, можно уменьшать проблему изучения мультикласса до серии бинарных учеников KNN, использующих fitcecoc
.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте 'HyperparameterOptimizationOptions', struct('UseParallel',true)
аргумент значения имени в вызове fitcknn
функция.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для получения общей информации о параллельных вычислениях, смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
Указания и ограничения по применению:
По умолчанию, fitcknn
использует исчерпывающий самый близкий соседний алгоритм поиска для gpuArray
входные параметры.
Вы не можете задать аргумент 'NSMethod'
значения имени как
'kdtree'
.
Вы не можете задать аргумент 'Distance'
значения имени как указатель на функцию.
Вы не можете задать аргумент 'IncludeTies'
значения имени как
true
.
fitcknn
возвращает модель классификации, подбиравшую с входными параметрами графического процессора массивов в этих случаях только:
Входной параметр X
gpuArray
.
Входной параметр Tbl
содержит gpuArray
элементы.
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
ClassificationKNN
| ClassificationPartitionedModel
| predict
| templateKNN
| fitcensemble
| fitcecoc
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.