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