ClassificationPartitionedModel

Пакет: classreg.learning.partition

Перекрестная подтвержденная модель классификации

Описание

ClassificationPartitionedModel является набором моделей классификации, обученных на перекрестных подтвержденных сгибах. Оцените качество классификации перекрестной проверкой с помощью одного или нескольких “kfold” методов: kfoldPredict, kfoldLoss, kfoldMargin, kfoldEdge и kfoldfun.

Каждый “kfold” метод использует модели, обученные на, окутывают наблюдения, чтобы предсказать ответ для наблюдений из сгиба. Например, предположите, что вы пересекаетесь, подтверждают использование пяти сгибов. В этом случае программное обеспечение случайным образом присваивает каждое наблюдение в пять примерно одинаково размерных групп. training fold содержит четыре из групп (т.е. примерно 4/5 данных), и test fold содержит другую группу (т.е. примерно 1/5 данных). В этом случае перекрестная проверка продолжает можно следующим образом:

  • Программное обеспечение обучает первую модель (сохраненный в CVMdl.Trained{1}) использование наблюдений в последних четырех группах и резервирует наблюдения в первой группе для валидации.

  • Программное обеспечение обучает вторую модель (сохраненный в CVMdl.Trained{2}) использование наблюдений в первой группе, и продержитесь три группы, и резервирует наблюдения во второй группе для валидации.

  • Программное обеспечение продолжает подобным способом для третьего к пятым моделям.

Если вы подтверждаете путем вызова kfoldPredict, он вычисляет прогнозы для наблюдений в группе 1, использующей первую модель, группу 2 для второй модели, и так далее. Короче говоря, программное обеспечение оценивает ответ для каждого наблюдения с помощью модели, обученной без того наблюдения.

Конструкция

CVMdl = crossval(Mdl) создает перекрестную подтвержденную модель классификации из модели классификации (Mdl).

В качестве варианта:

  • CVDiscrMdl = fitcdiscr(X,Y,Name,Value)

  • CVKNNMdl = fitcknn(X,Y,Name,Value)

  • CVNBMdl = fitcnb(X,Y,Name,Value)

  • CVSVMMdl = fitcsvm(X,Y,Name,Value)

  • CVTreeMdl = fitctree(X,Y,Name,Value)

создайте перекрестную подтвержденную модель, когда name будет или 'CrossVal', 'KFold', 'Holdout', 'Leaveout' или 'CVPartition'. Для получения дополнительной информации синтаксиса смотрите fitcdiscr, fitcknn, fitcnb, fitcsvm и fitctree.

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

Mdl

Модель классификации. Mdl может быть любым следующим:

  • Дерево классификации, обученное с помощью fitctree

  • Классификатор дискриминантного анализа, обученный с помощью fitcdiscr

  • Наивный классификатор Байеса, обученный с помощью fitcnb

  • Классификатор ближайшего соседа, обученный с помощью fitcknn

  • Классификатор машины вектора поддержки, обученный с помощью fitcsvm

Свойства

BinEdges

Ребра интервала для числовых предикторов, заданных как массив ячеек p числовые векторы, где p является количеством предикторов. Каждый вектор включает ребра интервала для числового предиктора. Элемент в массиве ячеек для категориального предиктора пуст, потому что программное обеспечение не делает интервала категориальные предикторы.

Числовые предикторы интервалов программного обеспечения, только если вы задаете аргумент пары "имя-значение" 'NumBins' как положительный целочисленный скаляр когда обучение модель с древовидными учениками. Свойство BinEdges пусто, если значение 'NumBins' пусто (значение по умолчанию).

Можно воспроизвести сгруппированные данные о предикторе Xbinned при помощи свойства BinEdges обученной модели mdl.

X = mdl.X; % Predictor data
Xbinned = zeros(size(X));
edges = mdl.BinEdges;
% Find indices of binned predictors.
idxNumeric = find(~cellfun(@isempty,edges));
if iscolumn(idxNumeric)
    idxNumeric = idxNumeric';
end
for j = idxNumeric 
    x = X(:,j);
    % Convert x to array if x is a table.
    if istable(x) 
        x = table2array(x);
    end
    % Group x into bins by using the discretize function.
    xbinned = discretize(x,[-inf; edges{j}; inf]); 
    Xbinned(:,j) = xbinned;
end
Xbinned содержит индексы интервала, в пределах от 1 к количеству интервалов, для числовых предикторов. значения Xbinned 0 для категориальных предикторов. Если X содержит NaN s, то соответствующими значениями Xbinned является NaN s.

CategoricalPredictors

Категориальные индексы предиктора, заданные как вектор положительных целых чисел. CategoricalPredictors содержит индексные значения, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

Если Mdl является обученным классификатором дискриминантного анализа, то CategoricalPredictors всегда пуст ([]).

ClassNames

Уникальные метки класса использовали в обучении модель, заданную как категориальное или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов.

Cost

Квадратная матрица, где Cost(i,j) является стоимостью классификации точки в класс j, если его истинным классом является i (т.е. строки соответствуют истинному классу и столбцам, соответствует предсказанному классу). Порядок строк и столбцов Cost соответствует порядку классов в ClassNames. Количество строк и столбцов в Cost является количеством уникальных классов в ответе.

Если CVModel является перекрестный подтвержденный ClassificationDiscriminant, ClassificationKNN или модель ClassificationNaiveBayes, то можно изменить ее матрицу стоимости на, например, CostMatrix, с помощью записи через точку.

CVModel.Cost = CostMatrix;

CrossValidatedModel

Имя перекрестной подтвержденной модели, которая является вектором символов.

KFold

Количество сгибов использовало в перекрестной подтвержденной модели, которая является положительным целым числом.

ModelParameters

Объект, содержащий параметры CVModel.

Partition

Раздел класса CVPartition, используемый в создании перекрестной подтвержденной модели.

PredictorNames

Имена переменной прогноза, заданные как массив ячеек из символьных векторов. Порядок элементов PredictorNames соответствует порядку, в котором имена предиктора появляются в данных тренировки.

Prior

Числовой вектор априорных вероятностей для каждого класса. Порядок элементов Prior соответствует порядку классов в ClassNames.

Если CVModel является перекрестной подтвержденной моделью ClassificationDiscriminant или ClassificationNaiveBayes, то можно изменить ее вектор уголовного прошлого к, например, priorVector, с помощью записи через точку.

CVModel.Prior = priorVector;

ResponseName

Имя переменной отклика, заданное как вектор символов.

ScoreTransform

Выиграйте преобразование, заданное как вектор символов или указатель на функцию. ScoreTransform представляет встроенную функцию преобразования или указатель на функцию для преобразования предсказанных очков классификации.

Изменить функцию преобразования счета на function, например, запись через точку использования.

  • Для встроенной функции введите вектор символов.

    Mdl.ScoreTransform = 'function';

    Эта таблица описывает доступные встроенные функции.

    ЗначениеОписание
    'doublelogit'1/(1 + e –2x)
    'invlogit'журнал (x / (1 – x))
    'ismax'Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к 0
    'logit'1/(1 + e x)
    'none' или 'identity'x (никакое преобразование)
    'sign'– 1 для x <0
    0 для x = 0
    1 для x> 0
    'symmetric'2x – 1
    'symmetricismax'Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1
    'symmetriclogit'2/(1 + e x) – 1

  • Для функции MATLAB® или функции, которую вы задаете, введите ее указатель на функцию.

    Mdl.ScoreTransform = @function;

    function должен принять матрицу (исходные очки) и возвратить матрицу, одного размера (преобразованные очки).

Trained

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

W

Масштабированный weights, который является вектором с длиной n, количество строк в X.

X

Матрица или таблица значений предиктора. Каждый столбец X представляет одну переменную, и каждая строка представляет одно наблюдение.

Y

Категориальный или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов, задающий класс, маркирует для каждого наблюдения. Y имеет одинаковое число строк как X, и каждая запись Y является ответом на данные в соответствующей строке X.

Методы

kfoldEdgeРебро классификации для наблюдений, не используемых для обучения
kfoldLossПотеря классификации для наблюдений, не используемых для обучения
kfoldMarginПоля классификации для наблюдений, не используемых для обучения
kfoldPredictПредскажите ответ для наблюдений, не используемых для обучения
kfoldfunКрест подтверждает функцию

Копировать семантику

Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

Оцените ошибку перекрестной проверки k-сгиба для модели дерева классификации.

Загрузите ирисовый набор данных Фишера.

load fisheriris

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

Mdl = fitctree(meas,species);

Крест подтверждает модель дерева классификации.

CVMdl = crossval(Mdl);

Оцените 10-кратную потерю перекрестной проверки.

L = kfoldLoss(CVMdl)
L = 0.0533

Оцените положительные апостериорные вероятности класса для набора тестов алгоритма SVM.

Загрузите набор данных ionosphere.

load ionosphere

Обучите классификатор SVM. Задайте 20%-ю выборку затяжки. Это - хорошая практика, чтобы стандартизировать предикторы и задать порядок класса.

rng(1) % For reproducibility
CVSVMModel = fitcsvm(X,Y,'Holdout',0.2,'Standardize',true,...
    'ClassNames',{'b','g'});

CVSVMModel является обученный ClassificationPartitionedModel перекрестный подтвержденный классификатор.

Оцените оптимальную функцию счета для отображения очков наблюдения к апостериорным вероятностям наблюдения, классифицируемого как 'g'.

ScoreCVSVMModel = fitSVMPosterior(CVSVMModel);

ScoreSVMModel является обученный ClassificationPartitionedModel перекрестный подтвержденный классификатор, содержащий оптимальную функцию преобразования счета, оцененную от данных тренировки.

Оцените положительные апостериорные вероятности класса из выборки. Отобразите результаты для первых 10 наблюдений из выборки.

[~,OOSPostProbs] = kfoldPredict(ScoreCVSVMModel);
indx = ~isnan(OOSPostProbs(:,2));
hoObs = find(indx); % Holdout observation numbers
OOSPostProbs = [hoObs, OOSPostProbs(indx,2)];
table(OOSPostProbs(1:10,1),OOSPostProbs(1:10,2),...
    'VariableNames',{'ObservationIndex','PosteriorProbability'})
ans=10×2 table
    ObservationIndex    PosteriorProbability
    ________________    ____________________

            6                   0.17378     
            7                   0.89637     
            8                 0.0076609     
            9                   0.91602     
           16                  0.026718     
           22                4.6081e-06     
           23                    0.9024     
           24                2.4129e-06     
           38                0.00042697     
           41                   0.86427     

Советы

Чтобы оценить апостериорные вероятности обученных, перекрестных подтвержденных классификаторов SVM, используйте fitSVMPosterior.