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