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 содержит NaNs, затем соответствующий Xbinned значениями является NaNs.

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

Матрица A или таблица значений предиктора. Каждый столбец 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.