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

Этот пример показывает, как визуализировать вероятности апостериорной классификации, предсказанные наивной моделью классификации Байеса.

Загрузите набор данных радужки Фишера.

load fisheriris
X = meas(:,1:2);
Y = species;
labels = unique(Y);

X является числовой матрицей, которая содержит два измерения лепестков для 150 ирисов. Y - массив ячеек из векторов символов, который содержит соответствующие виды радужной оболочки.

Визуализируйте данные с помощью графика поля точек. Сгруппировать переменные по видам радужки.

figure;
gscatter(X(:,1), X(:,2), species,'rgb','osd');
xlabel('Sepal length');
ylabel('Sepal width'); 

Figure contains an axes. The axes contains 3 objects of type line. These objects represent setosa, versicolor, virginica.

Обучите наивный классификатор Байеса.

mdl = fitcnb(X,Y);

mdl является обученным ClassificationNaiveBayes классификатор.

Создайте сетку точек, охватывающих все пространство в некоторых границах данных. Данные в X(:,1) находится в диапазоне от 4,3 до 7,9. Данные в X(:,2) находится в диапазоне от 2 до 4,4.

[xx1, xx2] = meshgrid(4:.01:8,2:.01:4.5);
XGrid = [xx1(:) xx2(:)];

Предсказать виды радужки и апостериорные вероятности классов каждого наблюдения в XGrid использование mdl.

[predictedspecies,Posterior,~] = predict(mdl,XGrid);

Постройте график апостериорного распределения вероятностей для каждого вида.

sz = size(xx1);
s = max(Posterior,[],2);

figure
hold on
surf(xx1,xx2,reshape(Posterior(:,1),sz),'EdgeColor','none')
surf(xx1,xx2,reshape(Posterior(:,2),sz),'EdgeColor','none')
surf(xx1,xx2,reshape(Posterior(:,3),sz),'EdgeColor','none')
xlabel('Sepal length');
ylabel('Sepal width');
colorbar
view(2) 
hold off

Figure contains an axes. The axes contains 3 objects of type surface.

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

Постройте график классификационных распределений вероятностей по отдельности.

figure('Units','Normalized','Position',[0.25,0.55,0.4,0.35]);
hold on
surf(xx1,xx2,reshape(Posterior(:,1),sz),'FaceColor','red','EdgeColor','none')
surf(xx1,xx2,reshape(Posterior(:,2),sz),'FaceColor','blue','EdgeColor','none')
surf(xx1,xx2,reshape(Posterior(:,3),sz),'FaceColor','green','EdgeColor','none')
xlabel('Sepal length');
ylabel('Sepal width');
zlabel('Probability');
legend(labels)
title('Classification Probability')
alpha(0.2)
view(3)
hold off

Figure contains an axes. The axes with title Classification Probability contains 3 objects of type surface. These objects represent setosa, versicolor, virginica.

См. также

Функции

Объекты

Похожие темы