margin

Поля классификации для наивных классификаторов Байеса

Описание

m = margin(Mdl,tbl,ResponseVarName) возвращает поля классификации (m) для обученного наивного классификатора Байеса Mdl использование данных о предикторе в таблице tbl и класс помечает в tbl.ResponseVarName.

m = margin(Mdl,tbl,Y) возвращает поля классификации (m) для обученного наивного классификатора Байеса Mdl использование данных о предикторе в таблице tbl и класс помечает в векторном Y.

пример

m = margin(Mdl,X,Y) возвращает поля классификации (m) для обученного наивного классификатора Байеса Mdl использование данных о предикторе X и класс маркирует Y.

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

развернуть все

Наивный классификатор Байеса в виде ClassificationNaiveBayes модель или CompactClassificationNaiveBayes модель возвращена fitcnb или compact, соответственно.

Выборочные данные в виде таблицы. Каждая строка tbl соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору. Опционально, tbl может содержать дополнительные столбцы для весов наблюдения и переменной отклика. tbl должен содержать все предикторы, используемые, чтобы обучить Mdl. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.

Если вы обучили Mdl использование выборочных данных содержится в table, затем входные данные для этого метода должны также быть в таблице.

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

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

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

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

Типы данных: char | string

Данные о предикторе в виде числовой матрицы.

Каждая строка X соответствует одному наблюдению (также известный как экземпляр или пример), и каждый столбец соответствует одной переменной (также известный как функцию). Переменные, составляющие столбцы X должен совпасть с переменными, которые обучили Mdl.

Длина Y и количество строк X должно быть равным.

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

Класс помечает в виде категориального, символа, или массива строк, логического или числового вектора или массива ячеек из символьных векторов. Y должен совпасть с типом данных Mdl.ClassNames. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)

Длина Y и количество строк tbl или X должно быть равным.

Типы данных: categorical | char | string | logical | single | double | cell

Выходные аргументы

развернуть все

Поля классификации, возвращенные как числовой вектор.

m имеет ту же длину, равную size(X,1). Каждая запись m поле классификации соответствующего наблюдения (строка) X и элемент Y.

Примеры

развернуть все

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

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1);

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

CVMdl = fitcnb(X,Y,'Holdout',0.30,...
    'ClassNames',{'setosa','versicolor','virginica'});
CMdl = CVMdl.Trained{1}; ...
    % Extract the trained, compact classifier
testInds = test(CVMdl.Partition);   % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds);

CVMdl ClassificationPartitionedModel классификатор. Это содержит свойство Trained, который является массивом ячеек 1 на 1, содержащим CompactClassificationNaiveBayes классификатор, что программное обеспечение обучило использование набора обучающих данных.

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

m = margin(CMdl,XTest,YTest);

figure;
boxplot(m);
title 'Distribution of the Test-Sample Margins';

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

Мера по полям классификатора, для каждого наблюдения, различие между истинным классом наблюдало счет и максимальный ложный счет класса к конкретному классу. Один способ выполнить выбор признаков состоит в том, чтобы сравнить тестовые демонстрационные поля от многоуровневых моделей. Базирующийся только на этом критерии, модель с самыми высокими полями является лучшей моделью.

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

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1);

Разделите набор данных в наборы обучающих данных и наборы тестов. Задайте 30%-ю выборку затяжки для тестирования.

Partition = cvpartition(Y,'Holdout',0.30);
testInds = test(Partition); % Indices for the test set
XTest = X(testInds,:);
YTest = Y(testInds);

Раздел задает раздел набора данных.

Задайте эти два набора данных:

  • fullX содержит все предикторы.

  • partX содержит последние 2 предиктора.

fullX = X;
partX = X(:,3:4);

Обучите наивные классификаторы Байеса каждому набору предиктора. Задайте определение раздела.

FCVMdl = fitcnb(fullX,Y,'CVPartition',Partition);
PCVMdl = fitcnb(partX,Y,'CVPartition',Partition);
FCMdl = FCVMdl.Trained{1};
PCMdl = PCVMdl.Trained{1};

FullCVMdl и PartCVMdl ClassificationPartitionedModel классификаторы. Они содержат свойство Trained, который является массивом ячеек 1 на 1, содержащим CompactClassificationNaiveBayes классификатор, что программное обеспечение обучило использование набора обучающих данных.

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

fullM = margin(FCMdl,XTest,YTest);
partM = margin(PCMdl,XTest(:,3:4),YTest);

figure;
boxplot([fullM partM],'Labels',{'All Predictors','Two Predictors'})
h = gca;
h.YLim = [0.98 1.01]; % Modify axis to see boxes.
title 'Boxplots of Test-Sample Margins';

Поля имеют подобное распределение, но PCMdl является менее комплексным.

Больше о

развернуть все

Расширенные возможности