exponenta event banner

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

Если для этого примера используется файл сценария в реальном времени, 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