Поля классификации для наивных классификаторов Байеса
m = margin(Mdl,tbl,ResponseVarName)
m = margin(Mdl,tbl,Y)
m = margin(Mdl,X,Y)
возвращает поля классификации (m
= margin(Mdl
,tbl
,ResponseVarName
)m
) для обученного наивного классификатора Байеса Mdl
с помощью данных о предикторе в таблице tbl
и меток класса в tbl.ResponseVarName
.
Mdl
— Наивный классификатор БайесаClassificationNaiveBayes
| модель CompactClassificationNaiveBayes
Наивный классификатор Байеса, заданный как модель ClassificationNaiveBayes
или модель CompactClassificationNaiveBayes
, возвращенная fitcnb
или compact
, соответственно.
tbl
Выборочные данныеВыборочные данные, заданные как таблица. Каждая строка tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной прогноза. Опционально, tbl
может содержать дополнительные столбцы для весов наблюдения и переменной отклика. tbl
должен содержать все предикторы, используемые, чтобы обучить Mdl
. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.
Если бы вы обучили Mdl
с помощью выборочных данных, содержавшихся в table
, то входные данные для этого метода должны также быть в таблице.
Типы данных: table
ResponseVarName
— Имя переменной откликаtbl
Имя переменной отклика, заданное как имя переменной в tbl
.
Необходимо задать ResponseVarName
как вектор символов или представить скаляр в виде строки. Например, если переменная отклика, y
хранится как tbl.y
, то задают его как 'y'
. В противном случае программное обеспечение обрабатывает все столбцы tbl
, включая y
, как предикторы когда обучение модель.
Переменная отклика должна быть категориальным, символом, или массивом строк, логическим или числовым вектором или массивом ячеек из символьных векторов. Если переменная отклика является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Типы данных: char | string
X
Данные о предиктореДанные о предикторе, заданные как числовая матрица.
Каждая строка X
соответствует одному наблюдению (также известный как экземпляр или пример), и каждый столбец соответствует одной переменной (также известный как функцию). Переменные, составляющие столбцы X
, должны совпасть с переменными, которые обучили Mdl
.
Длина Y
и количество строк X
должны быть равными.
Типы данных: double | single
Y
Метки классаМетки класса, заданные как категориальное, символ, или массив строк, логический или числовой вектор или массив ячеек из символьных векторов. Y
должен совпасть с типом данных Mdl.ClassNames
. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
Длина Y
и количество строк tbl
или X
должны быть равными.
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
m
Поля классификацииПоля классификации, возвращенные как числовой вектор.
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
является менее комплексным.
classification edge является взвешенным средним полей классификации.
Если вы предоставляете веса, то программное обеспечение нормирует их, чтобы суммировать к априорной вероятности их соответствующего класса. Программное обеспечение использует нормированные веса, чтобы вычислить взвешенное среднее.
Один способ выбрать среди нескольких классификаторов, например, выполнить выбор функции, состоит в том, чтобы выбрать классификатор, который приводит к самому высокому ребру.
classification margins, для каждого наблюдения, различия между счетом к истинному классу и максимальным счетом к ложным классам. При условии, что они находятся в той же шкале, поля служат мерой по уверенности классификации, т.е. среди нескольких классификаторов, те, которые уступают, большие поля лучше.
posterior probability является вероятностью, что наблюдение принадлежит конкретного класса, учитывая данные.
Для наивного Бейеса апостериорная вероятность, что классификацией является k для данного наблюдения (x 1..., xP)
где:
условная объединенная плотность предикторов, учитывая, они находятся в классе k. Mdl.DistributionNames
хранит имена распределения предикторов.
π (Y = k) является распределением априорной вероятности класса. Mdl.Prior
хранит предшествующее распределение.
объединенная плотность предикторов. Классы дискретны, таким образом,
prior probability класса является относительной частотой, которой верят, с которой наблюдения от того класса происходят в генеральной совокупности.
Наивный Байесов score является апостериорной вероятностью класса, учитывая наблюдение.
Эта функция полностью поддерживает "высокие" массивы. Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
ClassificationNaiveBayes
| CompactClassificationNaiveBayes
| edge
| fitcnb
| loss
| predict
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.