kfoldfun

Перекрестная валидация функции с использованием перекрестной проверенной модели ECOC

Синтаксис

Описание

пример

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

Примеры

свернуть все

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

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

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

Вычислите среднюю ошибку неправильной классификации с noversicolor стоимость.

foldLoss = kfoldfun(CVMdl,@noversicolor);
mean(foldLoss)
ans = 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-by - n числовую матрицу с одной строкой на складку.

Введенный в R2014b