kfoldfun

Функция перекрестной проверки для классификации

    Синтаксис

    Описание

    пример

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

    Примеры

    свернуть все

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

    Загрузите набор данных радужки Фишера.

    load fisheriris

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

    Mdl = fitctree(meas,species);

    Mdl является ClassificationTree модель.

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

    rng(1); % For reproducibility
    CVMdl = crossval(Mdl);
    L = kfoldLoss(CVMdl,'LossFun','classiferror')
    L = 0.0467
    

    Исследуйте результат, когда стоимость неправильной классификации цветка как versicolor является 10, и стоимость любой другой неправильной классификации 1. Создайте пользовательскую функцию noversicolor (показан в конце этого примера). Эта функция определяет стоимость 10 за неправильную классификацию цветка как versicolorи стоимость 1 за любую другую неправильную классификацию.

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

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

    Этот код создает функцию noversicolor.

    function averageCost = noversicolor(CMP,~,~,~,Xtest,Ytest,~)
    % 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

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

    свернуть все

    Перекрестная проверенная модель, заданная как ClassificationPartitionedModel объект, ClassificationPartitionedEnsemble объект, или ClassificationPartitionedGAM объект.

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

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

    Введенный в R2011a