Ребро классификации для наивного классификатора Байеса
возвращает Ребро Классификации (e
= edge(Mdl
,tbl
,ResponseVarName
)e
) для наивного классификатора Байеса Mdl
использование данных о предикторе в таблице tbl
и класс помечает в tbl.ResponseVarName
.
Ребро классификации (e
) скалярное значение, которое представляет взвешенное среднее Полей Классификации.
Оцените тестовое демонстрационное ребро (среднее значение поля классификации) наивного классификатора Байеса. Тестовое демонстрационное ребро является средним тестовым демонстрационным различием между предполагаемой апостериорной вероятностью для предсказанного класса и апостериорной вероятностью для класса со следующей самой низкой апостериорной вероятностью.
Загрузите fisheriris
набор данных. Создайте X
как числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Создайте Y
как массив ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.
load fisheriris X = meas; Y = species; rng('default') % for reproducibility
Случайным образом наблюдения раздела в набор обучающих данных и набор тестов со стратификацией, с помощью информации о классе в Y
. Задайте 30%-ю выборку затяжки для тестирования.
cv = cvpartition(Y,'HoldOut',0.30);
Извлеките обучение и протестируйте индексы.
trainInds = training(cv); testInds = test(cv);
Задайте наборы тестовых данных и обучение.
XTrain = X(trainInds,:); YTrain = Y(trainInds); XTest = X(testInds,:); YTest = Y(testInds);
Обучите наивный классификатор Байеса с помощью предикторов XTrain
и класс маркирует YTrain
. Методические рекомендации должны задать имена классов. fitcnb
принимает, что каждый предиктор условно и нормально распределен.
Mdl = fitcnb(XTrain,YTrain,'ClassNames',{'setosa','versicolor','virginica'})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 105 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell} Properties, Methods
Mdl
обученный ClassificationNaiveBayes
классификатор.
Оцените тестовое демонстрационное ребро.
e = edge(Mdl,XTest,YTest)
e = 0.8658
Граничным средним значением является приблизительно 0.87
. Этот результат предполагает, что классификатор помечает предикторы высоким доверием.
Оцените, что тестовая выборка взвесила ребро (взвешенное граничное среднее значение) наивного классификатора Байеса. Тестовое демонстрационное ребро является средним тестовым демонстрационным различием между предполагаемой апостериорной вероятностью для предсказанного класса и апостериорной вероятностью для класса со следующей самой низкой апостериорной вероятностью. Взвешенное демонстрационное ребро оценивает граничное среднее значение, когда программное обеспечение присваивает вес каждому наблюдению.
Загрузите fisheriris
набор данных. Создайте X
как числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Создайте Y
как массив ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.
load fisheriris X = meas; Y = species; rng('default') % for reproducibility
Предположим, что некоторые измерения являются более низким качеством, потому что они были измерены с более старой технологией. Чтобы симулировать этот эффект, добавьте шум в случайное подмножество 20 измерений.
idx = randperm(size(X,1),20); X(idx,:) = X(idx,:) + 2*randn(20,size(X,2));
Случайным образом наблюдения раздела в набор обучающих данных и набор тестов со стратификацией, с помощью информации о классе в Y
. Задайте 30%-ю выборку затяжки для тестирования.
cv = cvpartition(Y,'HoldOut',0.30);
Извлеките обучение и протестируйте индексы.
trainInds = training(cv); testInds = test(cv);
Задайте наборы тестовых данных и обучение.
XTrain = X(trainInds,:); YTrain = Y(trainInds); XTest = X(testInds,:); YTest = Y(testInds);
Обучите наивный классификатор Байеса с помощью предикторов XTrain
и класс маркирует YTrain
. Методические рекомендации должны задать имена классов. fitcnb
принимает, что каждый предиктор условно и нормально распределен.
Mdl = fitcnb(XTrain,YTrain,'ClassNames',{'setosa','versicolor','virginica'});
Mdl
обученный ClassificationNaiveBayes
классификатор.
Оцените тестовое демонстрационное ребро.
e = edge(Mdl,XTest,YTest)
e = 0.5920
Среднее поле - приблизительно 0,59.
Один способ уменьшать эффект шумных измерений состоит в том, чтобы присвоить их меньше веса, чем другие наблюдения. Задайте вектор веса, который дает лучшим качественным наблюдениям дважды вес других наблюдений.
n = size(X,1); weights = ones(size(X,1),1); weights(idx) = 0.5; weightsTrain = weights(trainInds); weightsTest = weights(testInds);
Обучите наивный классификатор Байеса с помощью предикторов XTrain
, класс маркирует YTrain
, и веса weightsTrain
.
Mdl_W = fitcnb(XTrain,YTrain,'Weights',weightsTrain,... 'ClassNames',{'setosa','versicolor','virginica'});
Mdl_W
обученный ClassificationNaiveBayes
классификатор.
Оцените, что тестовая выборка взвесила ребро с помощью схемы взвешивания.
e_W = edge(Mdl_W,XTest,YTest,'Weights',weightsTest)
e_W = 0.6816
Средневзвешенное поле - приблизительно 0,69. Этот результат показывает, что в среднем взвешенный классификатор помечает предикторы более высоким доверием, чем шум повредил предикторы.
Ребро классификатора измеряет среднее значение полей классификатора. Один способ выполнить выбор признаков состоит в том, чтобы сравнить тестовые демонстрационные ребра от многоуровневых моделей. Базирующийся только на этом критерии, классификатор с самым высоким ребром является лучшим классификатором.
Загрузите ionosphere
набор данных. Удалите первые два предиктора для устойчивости.
load ionosphere X = X(:,3:end); rng('default') % for reproducibility
Случайным образом наблюдения раздела в набор обучающих данных и набор тестов со стратификацией, с помощью информации о классе в Y
. Задайте 30%-ю выборку затяжки для тестирования.
cv = cvpartition(Y,'Holdout',0.30);
Извлеките обучение и протестируйте индексы.
trainInds = training(cv); testInds = test(cv);
Задайте наборы тестовых данных и обучение.
XTrain = X(trainInds,:); YTrain = Y(trainInds); XTest = X(testInds,:); YTest = Y(testInds);
Задайте эти два обучающих набора данных:
fullXTrain
содержит все предикторы.
partXTrain
содержит 10 самых важных предикторов.
fullXTrain = XTrain; idx = fscmrmr(XTrain,YTrain); partXTrain = XTrain(:,idx(1:10));
Обучите наивный классификатор Байеса каждому набору предиктора.
fullMdl = fitcnb(fullXTrain,YTrain); partMdl = fitcnb(partXTrain,YTrain);
fullMdl
и partMdl
обученный ClassificationNaiveBayes
классификаторы.
Оцените тестовое демонстрационное ребро для каждого классификатора.
fullEdge = edge(fullMdl,XTest,YTest)
fullEdge = 0.5831
partEdge = edge(partMdl,XTest(:,idx(1:10)),YTest)
partEdge = 0.7593
Тестовое демонстрационное ребро классификатора с помощью 10 самых важных предикторов больше.
Mdl
— Наивная Байесова модель классификацииClassificationNaiveBayes
объект модели | CompactClassificationNaiveBayes
объект моделиНаивная Байесова модель классификации в виде ClassificationNaiveBayes
объект модели или CompactClassificationNaiveBayes
объект модели, возвращенный fitcnb
или compact
, соответственно.
tbl
— Выборочные данныеВыборочные данные раньше обучали модель в виде таблицы. Каждая строка tbl
соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору. tbl
должен содержать все предикторы, используемые, чтобы обучить Mdl
. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены. Опционально, tbl
может содержать дополнительные столбцы для весов наблюдения и переменной отклика.
Если вы обучаете Mdl
использование выборочных данных, содержавшихся в таблице, затем входные данные для edge
должен также быть в таблице.
ResponseVarName
— Имя переменной откликаtbl
Имя переменной отклика в виде имени переменной в tbl
.
Необходимо задать ResponseVarName
как вектор символов или строковый скаляр. Например, если переменная отклика y
хранится как tbl.y
, затем задайте его как 'y'
. В противном случае программное обеспечение обрабатывает все столбцы tbl
, включая y
, как предикторы.
Если tbl
содержит переменную отклика, используемую, чтобы обучить Mdl
, затем вы не должны задавать ResponseVarName
.
Переменная отклика должна быть категориальным, символом, или массивом строк, логическим или числовым вектором или массивом ячеек из символьных векторов. Если переменная отклика является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Типы данных: char |
string
X
— Данные о предиктореДанные о предикторе в виде числовой матрицы.
Каждая строка X
соответствует одному наблюдению (также известный как экземпляр или пример), и каждый столбец соответствует одной переменной (также известный как функцию). Переменные в столбцах X
должен совпасть с переменными, которые обучили Mdl
классификатор.
Длина Y
и количество строк X
должно быть равным.
Типы данных: double |
single
Y
— Метки классаКласс помечает в виде категориального, символа, или массива строк, логического или числового вектора или массива ячеек из символьных векторов. Y
должен иметь совпадающий тип данных как Mdl.ClassNames
. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
Длина Y
должно быть равно количеству строк tbl
или X
.
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
Weights
— Веса наблюденияones(size(X,1),1)
(значение по умолчанию) | числовой вектор | имя переменной в tbl
Веса наблюдения в виде числового вектора или имени переменной в tbl
. Программное обеспечение взвешивает наблюдения в каждой строке X
или tbl
с соответствующими весами в Weights
.
Если вы задаете Weights
как числовой вектор, затем размер Weights
должно быть равно количеству строк X
или tbl
.
Если вы задаете Weights
как имя переменной в tbl
, затем имя должно быть вектором символов или строковым скаляром. Например, если веса хранятся как tbl.w
, затем задайте Weights
как 'w'
. В противном случае программное обеспечение обрабатывает все столбцы tbl
, включая tbl.w
, как предикторы.
Типы данных: double |
char
| string
classification edge является взвешенным средним полей классификации.
Если вы предоставляете веса, то программное обеспечение нормирует их, чтобы суммировать к априорной вероятности их соответствующего класса. Программное обеспечение использует нормированные веса, чтобы вычислить взвешенное среднее.
При желании среди нескольких классификаторов выполнить задачу, такую как раздел функции, выберите классификатор, который дает к самому высокому ребру.
classification margin для каждого наблюдения является различием между счетом к истинному классу и максимальным счетом к ложным классам. Поля обеспечивают меру по доверию классификации; среди нескольких классификаторов те, которые дают к большим полям (по той же шкале) лучше.
posterior probability является вероятностью, что наблюдение принадлежит конкретного класса, учитывая данные.
Для наивного Бейеса апостериорная вероятность, что классификацией является k для заданного наблюдения (x 1..., xP)
где:
условная объединенная плотность предикторов, учитывая, они находятся в классе k. Mdl.DistributionNames
хранит имена распределения предикторов.
π (Y = k) является априорным распределением вероятностей класса. Mdl.Prior
хранит предшествующее распределение.
объединенная плотность предикторов. Классы дискретны, таким образом,
prior probability класса является принятой относительной частотой, с которой наблюдения от того класса происходят в населении.
Наивный Байесов score является апостериорной вероятностью класса, учитывая наблюдение.
Эта функция полностью поддерживает "высокие" массивы. Для получения дополнительной информации см. Раздел "Высокие массивы".
ClassificationNaiveBayes
| CompactClassificationNaiveBayes
| fitcnb
| loss
| margin
| predict
| resubEdge
| resubLoss
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.