Подходящий 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.