Функция перекрестной проверки для классификации
Обучите классификационный древовидный классификатор, а затем перекрестно проверьте его с помощью пользовательской функции k-fold loss.
Загрузите набор данных радужки Фишера.
load fisheriris
Обучите классификационный древовидный классификатор.
Mdl = fitctree(meas,species);
Mdl
является ClassificationTree
модель.
Перекрестная валидация Mdl
использование 10-кратной перекрестной проверки по умолчанию. Вычислите классификационную ошибку (долю неправильно классифицированных наблюдений) для наблюдений с разбиением на валидации.
rng(1); % For reproducibility CVMdl = crossval(Mdl); L = kfoldLoss(CVMdl,'LossFun','classiferror')
L = 0.0467
Исследуйте результат, когда стоимость неправильной классификации цветка как versicolor
является 10
, и стоимость любой другой неправильной классификации 1
. Создайте пользовательскую функцию noversicolor
(показан в конце этого примера). Эта функция определяет стоимость 10
за неправильную классификацию цветка как versicolor
и стоимость 1
за любую другую неправильную классификацию.
Вычислите среднюю ошибку неправильной классификации с noversicolor
стоимость.
mean(kfoldfun(CVMdl,@noversicolor))
ans = 0.2267
Этот код создает функцию noversicolor
.
function averageCost = noversicolor(CMP,~,~,~,Xtest,Ytest,~) % noversicolor Example custom cross-validation function % Attributes a cost of 10 for misclassifying versicolor irises, and 1 for % the other irises. This example function requires the fisheriris data % set. Ypredict = predict(CMP,Xtest); misclassified = not(strcmp(Ypredict,Ytest)); % Different result classifiedAsVersicolor = strcmp(Ypredict,'versicolor'); % Index of bad decisions cost = sum(misclassified) + ... 9*sum(misclassified & classifiedAsVersicolor); % Total differences averageCost = cost/numel(Ytest); % Average error end
CVMdl
- Перекрестная проверенная модельClassificationPartitionedModel
| объекта ClassificationPartitionedEnsemble
| объекта ClassificationPartitionedGAM
объектПерекрестная проверенная модель, заданная как ClassificationPartitionedModel
объект, ClassificationPartitionedEnsemble
объект, или ClassificationPartitionedGAM
объект.
fun
- Перекрестная проверенная функцияПерекрестная проверенная функция, заданная как указатель на функцию. fun
имеет синтаксис:
testvals = fun(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
CMP
- компактная модель, сохраненная в одном элементе CVMdl
.Trained
свойство.
Xtrain
- обучающая матрица значений предиктора.
Ytrain
- обучающий массив значений отклика.
Wtrain
являются обучающими весами для наблюдений.
Xtest
и Ytest
являются ли тестовые данные со связанными весами Wtest
.
Возвращенное значение testvals
должен иметь одинаковый размер по всем складкам.
Типы данных: function_handle
vals
- Результаты перекрестной валидацииРезультаты перекрестной валидации, возвращенные как числовая матрица. vals
содержит массивы testvals
выход, сцепленный вертикально по всем складкам. Для примера, если testvals
из каждой складки является числовым вектором длины N
, kfoldfun
возвращает KFold
-by- N
числовая матрица с одной строкой на складку.
Типы данных: double
ClassificationPartitionedModel
| kfoldEdge
| kfoldLoss
| kfoldMargin
| kfoldPredict
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.