kfoldfun

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

Синтаксис

vals = kfoldfun(CVMdl,fun)

Описание

пример

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 = 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