Классифицируйте наблюдения с помощью наивного классификатора Байеса
[
также возвращает Апостериорную вероятность (label
,Posterior
,Cost
]
= resubPredict(Mdl
)Posterior
) и предсказанный (ожидал) Стоимость Misclassification (Cost
) соответствие наблюдениям (строки) в Mdl.X
.
Загрузите fisheriris
набор данных. Создайте X
как числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Создайте Y
как массив ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.
load fisheriris X = meas; Y = species; rng('default') % for reproducibility
Обучите наивный классификатор Байеса с помощью предикторов X
и класс маркирует Y
. Методические рекомендации должны задать имена классов. fitcnb
принимает, что каждый предиктор условно и нормально распределен.
Mdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell} Properties, Methods
Mdl
обученный ClassificationNaiveBayes
классификатор.
Предскажите метки обучающей выборки.
label = resubPredict(Mdl);
Отобразите результаты для случайного набора 10 наблюдений.
idx = randsample(size(X,1),10); table(Y(idx),label(idx),'VariableNames', ... {'TrueLabel','PredictedLabel'})
ans=10×2 table
TrueLabel PredictedLabel
______________ ______________
{'virginica' } {'virginica' }
{'setosa' } {'setosa' }
{'virginica' } {'virginica' }
{'versicolor'} {'versicolor'}
{'virginica' } {'virginica' }
{'versicolor'} {'versicolor'}
{'virginica' } {'virginica' }
{'setosa' } {'setosa' }
{'virginica' } {'virginica' }
{'setosa' } {'setosa' }
Создайте график беспорядка от истины, маркирует Y
и предсказанные метки label
.
cm = confusionchart(Y,label);
Оцените апостериорные вероятности в выборке и затраты misclassification с помощью наивного классификатора Байеса.
Загрузите fisheriris
набор данных. Создайте X
как числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Создайте Y
как массив ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.
load fisheriris X = meas; Y = species; rng('default') %for reproducibility
Обучите наивный классификатор Байеса с помощью предикторов X
и класс маркирует Y
. Методические рекомендации должны задать имена классов. fitcnb
принимает, что каждый предиктор условно и нормально распределен.
Mdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'});
Mdl
обученный ClassificationNaiveBayes
классификатор.
Оцените апостериорные вероятности и ожидаемые затраты misclassification для обучающих данных.
[label,Posterior,MisclassCost] = resubPredict(Mdl); Mdl.ClassNames
ans = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
Отобразите результаты для 10 случайным образом выбранных наблюдений.
idx = randsample(size(X,1),10); table(Y(idx),label(idx),Posterior(idx,:),MisclassCost(idx,:),'VariableNames', ... {'TrueLabel','PredictedLabel','PosteriorProbability','MisclassificationCost'})
ans=10×4 table
TrueLabel PredictedLabel PosteriorProbability MisclassificationCost
______________ ______________ _________________________________________ ______________________________________
{'virginica' } {'virginica' } 6.2514e-269 1.1709e-09 1 1 1 1.1709e-09
{'setosa' } {'setosa' } 1 5.5339e-19 2.485e-25 5.5339e-19 1 1
{'virginica' } {'virginica' } 7.4191e-249 1.4481e-10 1 1 1 1.4481e-10
{'versicolor'} {'versicolor'} 3.4472e-62 0.99997 3.362e-05 1 3.362e-05 0.99997
{'virginica' } {'virginica' } 3.4268e-229 6.597e-09 1 1 1 6.597e-09
{'versicolor'} {'versicolor'} 6.0941e-77 0.9998 0.00019663 1 0.00019663 0.9998
{'virginica' } {'virginica' } 1.3467e-167 0.002187 0.99781 1 0.99781 0.002187
{'setosa' } {'setosa' } 1 1.5776e-15 5.7172e-24 1.5776e-15 1 1
{'virginica' } {'virginica' } 2.0116e-232 2.6206e-10 1 1 1 2.6206e-10
{'setosa' } {'setosa' } 1 1.8085e-17 1.9639e-24 1.8085e-17 1 1
Порядок столбцов Posterior
и MisclassCost
соответствует порядку классов в Mdl.ClassNames
.
Mdl
— Полный, обученный наивный классификатор БайесаClassificationNaiveBayes
модельПолный, обученный наивный классификатор Байеса в виде ClassificationNaiveBayes
модель, обученная fitcnb
.
label
— Предсказанные метки классаПредсказанные метки класса, возвращенные как категориальный вектор, символьный массив, логический или числовой вектор или массив ячеек из символьных векторов.
Предсказанные метки класса имеют следующее:
Совпадающий тип данных как наблюдаемый класс помечает (Mdl.Y
). (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
Длина, равная количеству строк Mdl.X
.
Класс, дающий к самому низкому, ожидал стоимость misclassification (Cost
).
Posterior
— Апостериорная вероятность классаАпостериорная вероятность класса, возвращенная как числовая матрица. Posterior
имеет строки, равные количеству строк Mdl.X
и столбцы равняются количеству отличных классов в обучающих данных (size(Mdl.ClassNames,1)
).
Posterior(j,k)
предсказанная апостериорная вероятность класса k
(в классе Mdl.ClassNames(k)
) учитывая наблюдение в строке j
из Mdl.X
.
Cost
— Ожидаемые затраты misclassificationОжидаемая Стоимость Misclassification, возвращенная как числовая матрица. Cost
имеет строки, равные количеству строк Mdl.X
и столбцы равняются количеству отличных классов в обучающих данных (size(Mdl.ClassNames,1)
).
Cost(j,k)
ожидаемая misclassification стоимость наблюдения в строке j
из Mdl.X
предсказанный в класс k
(в классе Mdl.ClassNames(k)
).
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 класса является принятой относительной частотой, с которой наблюдения от того класса происходят в населении.
ClassificationNaiveBayes
| CompactClassificationNaiveBayes
| fitcnb
| loss
| predict
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.