kfoldfun

Перекрестный подтвердите функцию с помощью перекрестной подтвержденной модели ECOC

Синтаксис

Описание

пример

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

Примеры

свернуть все

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

Загрузите ирисовый набор данных Фишера. Задайте данные о предикторе X, данные об ответе Y, и порядок классов в Y.

load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y); % Class order
rng(1); % For reproducibility

Обучите и перекрестный подтвердите модель ECOC с помощью двоичных классификаторов машины опорных векторов (SVM). Стандартизируйте предикторы с помощью шаблона SVM и задайте порядок класса.

t = templateSVM('Standardize',1);
CVMdl = fitcecoc(X,Y,'CrossVal','on','Learners',t,...
    'ClassNames',classOrder);

CVMdl ClassificationPartitionedECOC модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку.

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

L = kfoldLoss(CVMdl)
L = 0.0400

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

Если вы используете файл live скрипта для этого примера, noversicolor функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB.

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

foldLoss = kfoldfun(CVMdl,@noversicolor);
mean(foldLoss)
ans = single
    0.0667

Этот код создает функциональный noversicolor.

function averageCost = noversicolor(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
% noversicolor: Example custom cross-validation function that assigns a cost of
%   10 for misclassifying versicolor irises and a cost of 1 for misclassifying
%   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 = single(cost/numel(Ytest)); % Average error
end

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

свернуть все

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

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

Расширенные возможности

Введенный в R2014b