Перекрестный подтвердите функцию для классификации
Обучите классификатор дерева классификации, и затем перекрестный подтвердите его с помощью пользовательской функции потерь k-сгиба.
Загрузите ирисовый набор данных Фишера.
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, и стоимостью любого другого misclassification является 1. Создайте пользовательский функциональный noversicolor (показанный в конце этого примера). Эта функция приписывает стоимость 10 для неправильной классификации цветка как versicolor, и стоимость 1 для любого другого misclassification.
Вычислите среднее значение misclassification ошибка с 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- N числовая матрица с одной строкой на сгиб.
Типы данных: double
ClassificationPartitionedModel | kfoldEdge | kfoldLoss | kfoldMargin | kfoldPredict
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.