Класс: ClassificationNaiveBayes
Предскажите метки перезамены наивного классификатора Байеса
[
дополнительно возвращает апостериорные вероятности (label
,Posterior
,Cost
]
= predict(Mdl
)Posterior
) и предсказанный (ожидал) затраты misclassification (Cost
) соответствие наблюдениям (строки) в Mdl.X
.
Mdl
— Полностью обученный наивный классификатор БайесаClassificationNaiveBayes
модельПолностью обученный наивный классификатор Байеса в виде ClassificationNaiveBayes
модель обучена fitcnb
.
label
— Предсказанные метки классаПредсказанные метки класса, возвращенные как категориальный вектор, символьный массив, логический или числовой вектор или массив ячеек из символьных векторов.
label
:
Posterior
— Апостериорные вероятности классаАпостериорные вероятности класса, возвращенные как числовая матрица. Posterior
имеет строки, равные количеству строк Mdl.X
и столбцы равняются количеству отличных классов в обучающих данных (size(Mdl.ClassNames,1)
).
Posterior(j,k)
предсказанная апостериорная вероятность класса k
(т.е. в классе Mdl.ClassNames(k)
) учитывая наблюдение в строке j
из Mdl.X
.
Типы данных: double
Cost
— Ожидаемые затраты misclassificationОжидаемые затраты misclassification, возвращенные как числовая матрица. Cost
имеет строки, равные количеству строк Mdl.X
и столбцы равняются количеству отличных классов в обучающих данных (size(Mdl.ClassNames,1)
).
Cost(j,k)
ожидаемая misclassification стоимость наблюдения в строке j
из Mdl.X
будучи предсказанным в класс k
(т.е. в классе Mdl.ClassNames(k)
).
Загрузите ирисовый набор данных Фишера.
load fisheriris X = meas; % Predictors Y = species; % Response
Обучите наивный классификатор Байеса. Это - хорошая практика, чтобы задать порядок класса. Примите, что каждый предиктор условно, нормально распределен, учитывая свою метку.
Mdl = fitcnb(X,Y,... 'ClassNames',{'setosa','versicolor','virginica'});
Mdl
ClassificationNaiveBayes
классификатор.
Предскажите метки обучающей выборки. Отобразите результаты для этих 10 наблюдений.
label = resubPredict(Mdl); rng(1); % For reproducibility idx = randsample(size(X,1),10); table(Y(idx),label(idx),'VariableNames',... {'TrueLabel','PredictedLabel'})
ans=10×2 table
TrueLabel PredictedLabel
______________ ______________
{'setosa' } {'setosa' }
{'versicolor'} {'versicolor'}
{'virginica' } {'virginica' }
{'setosa' } {'setosa' }
{'versicolor'} {'versicolor'}
{'setosa' } {'setosa' }
{'versicolor'} {'versicolor'}
{'versicolor'} {'versicolor'}
{'setosa' } {'setosa' }
{'setosa' } {'setosa' }
Загрузите ирисовый набор данных Фишера.
load fisheriris X = meas; % Predictors Y = species; % Response
Обучите наивный классификатор Байеса. Это - хорошая практика, чтобы задать порядок класса. Примите, что каждый предиктор условно, нормально распределен, учитывая свою метку.
Mdl = fitcnb(X,Y,... 'ClassNames',{'setosa','versicolor','virginica'});
Mdl
ClassificationNaiveBayes
классификатор.
Оцените апостериорные вероятности и ожидаемые затраты misclassification для обучающих данных. Отобразите результаты для 10 наблюдений.
[label,Posterior,MisclassCost] = resubPredict(Mdl);
rng(1); % For reproducibility
idx = randsample(size(X,1),10);
Mdl.ClassNames
ans = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
table(Y(idx),label(idx),Posterior(idx,:),'VariableNames',... {'TrueLabel','PredictedLabel','PosteriorProbability'})
ans=10×3 table
TrueLabel PredictedLabel PosteriorProbability
______________ ______________ _________________________________________
{'setosa' } {'setosa' } 1 3.8821e-16 5.5878e-24
{'versicolor'} {'versicolor'} 1.2516e-54 1 4.5001e-06
{'virginica' } {'virginica' } 5.5646e-188 0.00058232 0.99942
{'setosa' } {'setosa' } 1 4.5352e-20 3.1301e-27
{'versicolor'} {'versicolor'} 5.0002e-69 0.99989 0.00010716
{'setosa' } {'setosa' } 1 2.9813e-18 2.1524e-25
{'versicolor'} {'versicolor'} 4.6313e-60 0.99999 7.5413e-06
{'versicolor'} {'versicolor'} 7.9205e-100 0.94293 0.057072
{'setosa' } {'setosa' } 1 1.799e-19 6.0606e-27
{'setosa' } {'setosa' } 1 1.5426e-17 1.2744e-24
MisclassCost(idx,:)
ans = 10×3
0.0000 1.0000 1.0000
1.0000 0.0000 1.0000
1.0000 0.9994 0.0006
0.0000 1.0000 1.0000
1.0000 0.0001 0.9999
0.0000 1.0000 1.0000
1.0000 0.0000 1.0000
1.0000 0.0571 0.9429
0.0000 1.0000 1.0000
0.0000 1.0000 1.0000
Порядок столбцов Posterior
и MisclassCost
соответствует порядку классов в Mdl.ClassNames
.
misclassification cost является относительной серьезностью классификатора, маркирующего наблюдение в неправильный класс.
Существует два типа затрат misclassification: верный и ожидаемый. Позвольте K быть количеством классов.
True misclassification cost — K-by-K матрица, где элемент (i, j) указывает на misclassification стоимость предсказания наблюдения в класс j, если его истинным классом является i. Программное обеспечение хранит стоимость misclassification в свойстве Mdl.Cost
, и используемый в расчетах. По умолчанию, Mdl.Cost(i,j)
= 1, если i
≠ j
, и Mdl.Cost(i,j)
= 0, если i
= j
. Другими словами, стоимостью является 0
для правильной классификации и 1
для любой неправильной классификации.
Expected misclassification cost — K - размерный вектор, где элемент k является взвешенным средним misclassification стоимость классификации наблюдения в класс k, взвешенный апостериорными вероятностями класса. Другими словами,
программное обеспечение классифицирует наблюдения к классу, соответствующему с самой низкой ожидаемой стоимостью misclassification.
posterior probability является вероятностью, что наблюдение принадлежит конкретного класса, учитывая данные.
Для наивного Бейеса апостериорная вероятность, что классификацией является k для заданного наблюдения (x 1..., xP)
где:
условная объединенная плотность предикторов, учитывая, они находятся в классе k. Mdl.DistributionNames
хранит имена распределения предикторов.
π (Y = k) является распределением априорной вероятности класса. Mdl.Prior
хранит предшествующее распределение.
объединенная плотность предикторов. Классы дискретны, таким образом,
prior probability класса является относительной частотой, которой верят, с которой наблюдения от того класса происходят в населении.
[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения, второго выпуска. Нью-Йорк: Спрингер, 2008.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.