kfoldfun

Крест подтверждает функцию

Синтаксис

Описание

пример

vals = kfoldfun(CVMdl,fun) крест подтверждает функциональный fun путем применения fun к данным, хранимым в перекрестной подтвержденной модели CVMdl. Необходимо передать fun как указатель на функцию.

Входные параметры

развернуть все

Перекрестная подтвержденная модель в виде ClassificationPartitionedECOC модель, ClassificationPartitionedEnsemble модель или ClassificationPartitionedModel модель.

Перекрестная подтвержденная функция в виде указателя на функцию. fun имеет синтаксис

testvals = fun(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
  • CMP компактная модель, сохраненная в одном элементе CVMdl.Trained свойство.

  • Xtrain учебная матрица значений предиктора.

  • Ytrain учебный массив значений ответа.

  • Wtrain учебные веса для наблюдений.

  • Xtest и Ytest тестовые данные, со связанными весами Wtest.

  • Возвращенное значение testvals нуждается в том же размере через все сгибы.

Типы данных: function_handle

Выходные аргументы

развернуть все

Результаты перекрестной проверки, возвращенные как числовая матрица. vals массивы testvals выведите, конкатенированный вертикально по всем сгибам. Например, если testvals от каждого сгиба числовой вектор длины N, kfoldfun возвращает KFold- N числовая матрица с одной строкой на сгиб.

Типы данных: double

Примеры

развернуть все

Обучите классификатор дерева классификации, и затем пересекитесь, подтверждают, он с помощью пользовательского k - сворачивает функцию потерь.

Загрузите ирисовый набор данных Фишера.

load fisheriris

Обучите классификатор дерева классификации.

Mdl = fitctree(meas,species);

Mdl ClassificationTree модель.

Крест подтверждает Mdl использование 10-кратной перекрестной проверки по умолчанию. Вычислите ошибку классификации (пропорция неправильно классифицированных наблюдений) для наблюдений из сгиба.

rng(1); % For reproducibility
CVMdl = crossval(Mdl);
L = kfoldLoss(CVMdl)
L =

    0.0467

Исследуйте результат когда стоимость неправильной классификации цветка как 'versicolor' 10, и любой другой ошибкой является 1. Запишите функцию под названием noversicolor.m это приписывает стоимость 1 для misclassification, но 10 для неправильной классификации цветка как versicolor, и сохраните его на своем пути MATLAB®.

function averageCost = noversicolor(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
%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


Вычислите среднее значение misclassification ошибка с noversicolor стоимость.

mean(kfoldfun(CVMdl,@noversicolor))
ans =

    0.2267