Подходящий k - самый близкий соседний классификатор
Mdl = fitcknn(Tbl,ResponseVarName)Mdl = fitcknn(Tbl,formula)Mdl = fitcknn(Tbl,Y)Mdl = fitcknn(X,Y)Mdl = fitcknn(___,Name,Value) возвращает k - самая близкая соседняя классификация, основанная на модели на входных переменных (также известный как предикторы, функции или атрибуты) в таблице Mdl = fitcknn(Tbl,ResponseVarName)Tbl и выводе (ответ) Tbl.ResponseVarName.
подбирает модель с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение", с помощью любого из предыдущих синтаксисов. Например, можно задать повреждающий связь алгоритм, метрику расстояния или веса наблюдения.Mdl = fitcknn(___,Name,Value)
Обучите соседний классификатор k-nearest ирисовым данным Фишера, где 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 array
{'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-nearest с помощью расстояния хи-квадрата.
Загрузите ирисовый набор данных Фишера.
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. 10-кратная ошибка классификации составляет 4%.
Сравните классификатор с тем, который использует различную схему взвешивания.
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 | 0.56239 | 0.026667 | 0.026667 | 30 | cosine |
| 2 | Accept | 0.04 | 0.34689 | 0.026667 | 0.027197 | 2 | chebychev |
| 3 | Accept | 0.19333 | 0.24933 | 0.026667 | 0.030324 | 1 | hamming |
| 4 | Accept | 0.33333 | 0.21078 | 0.026667 | 0.033313 | 31 | spearman |
| 5 | Best | 0.02 | 0.13089 | 0.02 | 0.020648 | 6 | cosine |
| 6 | Accept | 0.073333 | 0.10066 | 0.02 | 0.023082 | 1 | correlation |
| 7 | Accept | 0.06 | 0.11359 | 0.02 | 0.020875 | 2 | cityblock |
| 8 | Accept | 0.04 | 0.11573 | 0.02 | 0.020622 | 1 | euclidean |
| 9 | Accept | 0.24 | 0.18631 | 0.02 | 0.020562 | 74 | mahalanobis |
| 10 | Accept | 0.04 | 0.13418 | 0.02 | 0.020649 | 1 | minkowski |
| 11 | Accept | 0.053333 | 0.19316 | 0.02 | 0.020722 | 1 | seuclidean |
| 12 | Accept | 0.19333 | 0.10722 | 0.02 | 0.020701 | 1 | jaccard |
| 13 | Accept | 0.04 | 0.1114 | 0.02 | 0.029203 | 1 | cosine |
| 14 | Accept | 0.04 | 0.13639 | 0.02 | 0.031888 | 75 | cosine |
| 15 | Accept | 0.04 | 0.11195 | 0.02 | 0.020076 | 1 | cosine |
| 16 | Accept | 0.093333 | 0.10948 | 0.02 | 0.020073 | 75 | euclidean |
| 17 | Accept | 0.093333 | 0.10482 | 0.02 | 0.02007 | 75 | minkowski |
| 18 | Accept | 0.1 | 0.095075 | 0.02 | 0.020061 | 75 | chebychev |
| 19 | Accept | 0.15333 | 0.099432 | 0.02 | 0.020044 | 75 | seuclidean |
| 20 | Accept | 0.1 | 0.099646 | 0.02 | 0.020044 | 75 | cityblock |
|=====================================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | NumNeighbors | Distance |
| | result | | runtime | (observed) | (estim.) | | |
|=====================================================================================================|
| 21 | Accept | 0.033333 | 0.099878 | 0.02 | 0.020046 | 75 | correlation |
| 22 | Accept | 0.033333 | 0.11003 | 0.02 | 0.02656 | 9 | cosine |
| 23 | Accept | 0.033333 | 0.09791 | 0.02 | 0.02854 | 9 | cosine |
| 24 | Accept | 0.02 | 0.10354 | 0.02 | 0.028607 | 1 | chebychev |
| 25 | Accept | 0.02 | 0.10871 | 0.02 | 0.022264 | 1 | chebychev |
| 26 | Accept | 0.02 | 0.11178 | 0.02 | 0.021439 | 1 | chebychev |
| 27 | Accept | 0.02 | 0.10486 | 0.02 | 0.020999 | 1 | chebychev |
| 28 | Accept | 0.66667 | 0.10028 | 0.02 | 0.020008 | 75 | hamming |
| 29 | Accept | 0.04 | 0.11093 | 0.02 | 0.020008 | 12 | correlation |
| 30 | Best | 0.013333 | 0.11313 | 0.013333 | 0.013351 | 6 | euclidean |
__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 44.1099 seconds.
Total objective function evaluation time: 4.3804
Best observed feasible point:
NumNeighbors Distance
____________ _________
6 euclidean
Observed objective function value = 0.013333
Estimated objective function value = 0.013351
Function evaluation time = 0.11313
Best estimated feasible point (according to models):
NumNeighbors Distance
____________ _________
6 euclidean
Estimated objective function value = 0.013351
Estimated function evaluation time = 0.13062
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 — Explanatory ответа и подмножество переменных прогнозаОбъяснительная модель ответа и подмножество переменных прогноза, заданных как вектор символов или скаляр строки в форме 'Y~X1+X2+X3'. В этой форме Y представляет переменную отклика, и X1, X2, и X3 представляет переменные прогноза. Переменные должны быть именами переменных в Tbl (Tbl.Properties.VariableNames).
Чтобы задать подмножество переменных в Tbl как предикторы для обучения модель, используйте формулу. Если вы задаете формулу, то программное обеспечение не использует переменных в Tbl, которые не появляются в formula.
Типы данных: 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'NumNeighbors',3,'NSMethod','exhaustive','Distance','minkowski' задает классификатор для трехсамых близких соседей, использующих самый близкий соседний метод поиска и метрику Минковскего.Вы не можете использовать аргумент пары "имя-значение" перекрестной проверки наряду с аргументом пары "имя-значение" 'OptimizeHyperparameters'. Можно изменить перекрестную проверку для 'OptimizeHyperparameters' только при помощи аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'.
'BreakTies' — Повреждающий связь алгоритм'smallest' (значение по умолчанию) | 'nearest' | 'random'Повреждающий связь алгоритм, используемый методом predict, если несколько классов имеют ту же самую маленькую стоимость, заданную как пара, разделенная запятой, состоящая из 'BreakTies' и одно из следующего:
'smallest' — Используйте самый маленький индекс среди связанных групп.
самый близкий Используйте класс с самым близким соседом среди связанных групп.
'random' — Используйте случайное дополнительное время среди связанных групп.
По умолчанию связи происходят, когда несколько классов имеют то же количество самых близких точек среди K самые близкие соседи.
Пример: 'BreakTies','nearest'
'BucketSize' — Максимальные точки данных в узле50 (значение по умолчанию) | положительное целочисленное значениеМаксимальное количество точек данных в вершине kd-дерева, заданного как пара, разделенная запятой, состоящая из 'BucketSize' и положительного целочисленного значения. Этот аргумент значим только, когда NSMethod является 'kdtree'.
Пример: 'BucketSize',40
Типы данных: single | double
'CategoricalPredictors' — Категориальный флаг предиктора[] (значение по умолчанию) | 'all'Категориальный флаг предиктора, заданный как пара, разделенная запятой, состоящая из 'CategoricalPredictors' и одно из следующего:
все Все предикторы являются категориальными.
[] — Никакие предикторы не являются категориальными.
Когда вы устанавливаете CategoricalPredictors на 'all', Distance по умолчанию является 'hamming'.
Пример: 'CategoricalPredictors','all'
'ClassNames' — Имена классов, чтобы использовать для обученияИмена классов, чтобы использовать для обучения, заданного как пара, разделенная запятой, состоящая из 'ClassNames' и категориального, символа, или массива строк, логического или числового вектора или массива ячеек из символьных векторов. ClassNames должен иметь совпадающий тип данных как Y.
Если ClassNames является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Используйте ClassNames для:
Закажите классы во время обучения.
Задайте порядок любой размерности аргумента ввода или вывода, которая соответствует порядку класса. Например, используйте ClassNames, чтобы задать порядок размерностей Cost или порядка следования столбцов очков классификации, возвращенных predict.
Выберите подмножество классов для обучения. Например, предположите, что набором всех отличных имен классов в Y является {'a','b','c'}. Чтобы обучить модель с помощью наблюдений от классов 'a' и 'c' только, задайте 'ClassNames',{'a','c'}.
Значение по умолчанию для ClassNames является набором всех отличных имен классов в Y.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical | char | string | logical | single | double | cell
'Cost' — Стоимость misclassificationСтоимость misclassification точки, заданной как пара, разделенная запятой, состоящая из 'Cost' и одно из следующего:
Квадратная матрица, где Cost(i,j) является стоимостью классификации точки в класс j, если его истинным классом является i (т.е. строки соответствуют истинному классу и столбцам, соответствует предсказанному классу). Чтобы задать порядок класса для соответствующих строк и столбцов Cost, дополнительно задайте аргумент пары "имя-значение" ClassNames.
Структура S, имеющий два поля: S.ClassNames, содержащий названия группы как переменная того же типа как Y и S.ClassificationCosts, содержащий матрицу стоимости.
Значением по умолчанию является Cost(i,j)=1 если i~=j и Cost(i,j)=0 если i=j.
Типы данных: single | double | struct
cov Ковариационная матрицаnancov(X) (значение по умолчанию) | положительная определенная матрица скалярных значенийКовариационная матрица, заданная как пара, разделенная запятой, состоящая из 'Cov' и положительная определенная матрица скалярных значений, представляющих ковариационную матрицу при вычислении расстояния Mahalanobis. Этот аргумент только допустим, когда 'Distance' является 'mahalanobis'.
Вы не можете одновременно задать 'Standardize' и или 'Scale' или 'Cov'.
Типы данных: 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 не разрежен, и метрика расстояния является типом 'kdtree'; в противном случае, 'exhaustive'.
Пример: 'NSMethod','exhaustive'
'PredictorNames' — Имена переменной прогнозаИмена переменной прогноза, заданные как пара, разделенная запятой, состоящая из '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' (значение по умолчанию) | вектор символов | представляет скаляр в виде строкиИмя переменной отклика, заданное как пара, разделенная запятой, состоящая из 'ResponseName' и вектора символов или скаляра строки.
Если вы предоставляете Y, то можно использовать 'ResponseName', чтобы задать имя для переменной отклика.
Если вы предоставляете ResponseVarName или formula, то вы не можете использовать 'ResponseName'.
Пример: 'ResponseName','response'
Типы данных: char | string
шкала Шкала расстоянияnanstd(X) (значение по умолчанию) | вектор неотрицательных скалярных значенийШкала расстояния, заданная как пара, разделенная запятой, состоящая из 'Scale' и вектора, содержащего неотрицательные скалярные значения с длиной, равняется количеству столбцов в X. Каждое координатное различие между X и точкой запроса масштабируется соответствующим элементом Scale. Этот аргумент только допустим, когда 'Distance' является 'seuclidean'.
Вы не можете одновременно задать 'Standardize' и или 'Scale' или 'Cov'.
Типы данных: single | double
'ScoreTransform' — Выиграйте преобразование'none' (значение по умолчанию) | 'doublelogit' | 'invlogit' | 'ismax' | 'logit' | указатель на функцию |...Выиграйте преобразование, заданное как пара, разделенная запятой, состоящая из 'ScoreTransform' и вектора символов, представьте в виде строки скаляр или указатель на функцию.
Эта таблица суммирует доступные векторы символов и скаляры строки.
| Значение | Описание |
|---|---|
'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
'Weights' — Веса наблюденияTblВеса наблюдения, заданные как пара, разделенная запятой, состоящая из 'Weights' и числовой вектор положительных значений или имя переменной в Tbl. Программное обеспечение взвешивает наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должен равняться количеству строк X или Tbl.
Если вы задаете входные данные как таблицу Tbl, то Weights может быть именем переменной в Tbl, который содержит числовой вектор. В этом случае необходимо задать Weights как вектор символов или представить скаляр в виде строки. Например, если вектор весов, W хранится как Tbl.W, то задают его как 'W'. В противном случае программное обеспечение обрабатывает все столбцы Tbl, включая W, как предикторы или ответ когда обучение модель.
Программное обеспечение нормирует Weights, чтобы суммировать до значения априорной вероятности в соответствующем классе.
По умолчанию Weights является , где ones(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, создается cvpartition. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5). Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp.
'Holdout' — Часть данных для валидации затяжкиЧасть данных используется для валидации затяжки, заданной как пара, разделенная запятой, состоящая из 'Holdout' и скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p, то программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте % p*100 данных как данные о валидации и обучите модель с помощью остальной части данных.
Сохраните компактную, обученную модель в свойстве Trained перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.
Пример: 'Holdout',0.1
Типы данных: double | single
'KFold' — Количество сгибов10 (значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели, заданной как пара, разделенная запятой, состоящая из 'KFold' и положительного целочисленного значения, больше, чем 1. Если вы задаете 'KFold',k, то программное обеспечение завершает эти шаги:
Случайным образом разделите данные в наборы k.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k – 1 набор.
Сохраните k компактные, обученные модели в ячейках k-by-1 вектор ячейки в свойстве Trained перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.
Пример: 'KFold',5
Типы данных: single | double
'Leaveout' — Флаг перекрестной проверки "Пропускает один"'off' (значение по умолчанию) | 'on'Флаг перекрестной проверки "Пропускает один", заданный как пара, разделенная запятой, состоящая из 'Leaveout' и 'on' или 'off'. Если вы задаете 'Leaveout','on', то, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в свойстве NumObservations модели), программное обеспечение завершает эти шаги:
Зарезервируйте наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.
Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в свойстве Trained перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.
Пример: 'Leaveout','on'
'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, как вычислено nancov(X). Чтобы задать различное значение для C, используйте аргумент пары "имя-значение" 'Cov'. |
'minkowski' | Расстояние Минковскего. Экспонентой по умолчанию является 2. Чтобы задать различную экспоненту, используйте аргумент пары "имя-значение" 'Exponent'. |
'seuclidean' | Стандартизированное Евклидово расстояние. Каждое координатное различие между X и точкой запроса масштабируется, означая разделенный на значение шкалы S. Значение по умолчанию S является стандартным отклонением, вычисленным из X, S = nanstd(X). Чтобы задать другое значение для 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/distance2 |
| fcn является функцией, которая принимает матрицу неотрицательных расстояний и возвращает матрицу тот же размер, содержащий неотрицательные веса расстояния. Например, 'squaredinverse' эквивалентен @(d)d.^(-2). |
Пример: 'DistanceWeight','inverse'
Типы данных: char | string | function_handle
'Exponent' — Экспонента расстояния Минковскего2 (значение по умолчанию) | значение положительной скалярной величиныЭкспонента расстояния Минковскего, заданная как пара, разделенная запятой, состоящая из 'Exponent' и значения положительной скалярной величины. Этот аргумент только допустим, когда 'Distance' является 'minkowski'.
Пример: 'Exponent',3
Типы данных: single | double
'NumNeighbors' — Количество самых близких соседей, чтобы найти1 (значение по умолчанию) | положительное целочисленное значениеКоличество самых близких соседей в X, чтобы найти для классификации каждой точки при предсказании, заданный как пара, разделенная запятой, состоящая из 'NumNeighbors' и положительного целочисленного значения.
Пример: 'NumNeighbors',3
Типы данных: single | double
'Standardize' — Отметьте, чтобы стандартизировать предикторыfalse (значение по умолчанию) | trueОтметьте, чтобы стандартизировать предикторы, заданные как пара, разделенная запятой, состоящая из 'Standardize' и true (1) или false (0).
Если вы устанавливаете 'Standardize',true, то центры программного обеспечения и масштабируют каждый столбец данных о предикторе (X) столбцом среднее и стандартное отклонение, соответственно.
Программное обеспечение не стандартизирует категориальные предикторы и выдает ошибку, если все предикторы являются категориальными.
Вы не можете одновременно задать 'Standardize',1 и или 'Scale' или 'Cov'.
Это - хорошая практика, чтобы стандартизировать данные о предикторе.
Пример: 'Standardize',true
Типы данных: логический
'OptimizeHyperparameters' — Параметры, чтобы оптимизировать'none' (значение по умолчанию) | 'auto' | 'all' | массив строк или массив ячеек имеющих право названий параметра | вектор объектов optimizableVariableПараметры, чтобы оптимизировать, заданный как пара, разделенная запятой, состоящая из 'OptimizeHyperparameters' и одно из следующего:
'none' Не оптимизировать.
'auto' Используйте {'Distance','NumNeighbors'}.
все Оптимизируйте все имеющие право параметры.
Массив строк или массив ячеек имеющих право названий параметра.
Вектор объектов optimizableVariable, обычно вывод hyperparameters.
Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitcknn путем варьирования параметров. Для получения информации о потере перекрестной проверки (хотя в различном контексте), смотрите Потерю Классификации. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте пару "имя-значение" HyperparameterOptimizationOptions.
Значения 'OptimizeHyperparameters' заменяют любые значения, вы устанавливаете использование других аргументов пары "имя-значение". Например, установка 'OptimizeHyperparameters' к 'auto' заставляет значения 'auto' применяться.
Имеющие право параметры для fitcknn:
Distance — fitcknn ищет среди 'cityblock', 'chebychev', 'correlation', '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.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите поле Verbose аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'. Чтобы управлять графиками, установите поле ShowPlots аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'.
Для примера смотрите, Оптимизируют Подходящий Классификатор KNN.
Пример: 'auto'
'HyperparameterOptimizationOptions' — Опции для оптимизацииОпции для оптимизации, заданной как пара, разделенная запятой, состоящая из 'HyperparameterOptimizationOptions' и структуры. Этот аргумент изменяет эффект аргумента пары "имя-значение" OptimizeHyperparameters. Все поля в структуре являются дополнительными.
| Имя поля | Значения | Значение по умолчанию |
|---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Приобретение функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' или 'randomsearch' и целой сетки для 'gridsearch' |
MaxTime | Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch', количества значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10 |
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true, это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer является 'bayesopt', то 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 удаляет недостающие наблюдения из отдельных предикторов прежде, чем вычислить среднее и стандартное отклонение. Другими словами, программное обеспечение реализует nanmean и nanstd на каждом предикторе.
Если вы задаете расстояние Mahalanobis ('Distance','mahalanbois') без его ковариационной матрицы, то fitcknn удаляет строки X, которые содержат по крайней мере одно отсутствующее значение. Другими словами, программное обеспечение реализует nancov на матрице предиктора X.
Предположим, что вы устанавливаете 'Standardize',1.
Если вы также задаете Prior или Weights, то программное обеспечение принимает веса наблюдения во внимание. А именно, взвешенное среднее предиктора j
и взвешенное стандартное отклонение
где Bj является набором индексов k, для которого не отсутствуют xjk и wk.
Если вы также устанавливаете 'Distance','mahalanobis' или 'Distance','seuclidean', то вы не можете задать Scale или Cov. Вместо этого программное обеспечение:
Вычисляет средние значения и стандартные отклонения каждого предиктора
Стандартизирует данные с помощью результатов шага 1
Вычисляет значения параметров расстояния с помощью их соответствующего значения по умолчанию.
Если вы задаете Scale и или Prior или Weights, то программное обеспечение масштабирует наблюдаемые расстояния взвешенными стандартными отклонениями.
Если вы задаете Cov и или Prior или Weights, то программное обеспечение применяет взвешенную ковариационную матрицу к расстояниям. Другими словами,
где B является набором индексов j, для которого наблюдение xj не имеет никаких отсутствующих значений, и wj не отсутствует.
Несмотря на то, что fitcknn может обучить мультикласс классификатор KNN, можно уменьшать проблему изучения мультикласса до серии бинарных учеников KNN, использующих fitcecoc.
Чтобы запуститься параллельно, установите опцию 'UseParallel' на true.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте аргумент пары "имя-значение" 'HyperparameterOptions', struct('UseParallel',true) в вызове этой функции.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Выполнения с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
ClassificationKNN | ClassificationPartitionedModel | fitcecoc | fitcensemble | predict | templateKNN
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.