matlab机器学习之朴素贝叶斯实例分析

本文仅说明matlab中关于朴素贝叶斯算法中函数运用的简单实例。
使用matlab自带的数据集 fisheriris
此数据集包含以下两个矩阵:
在这里插入图片描述
species包含3个种类—‘setosa’,‘versicolor’,‘virginica’
可实现三分类 可仿照这个写

默认情况下,该软件使用具有一定平均值和标准偏差的高斯分布对每个类​​别内的预测变量分布进行建模。

load fisheriris
X = meas(:,3:4);  %仅使用meas里第三和第四的特征
Y = species;
tabulate(Y)    %展示Y各个的species的占比

%创建mdl
Mdl = fitcnb(X,Y,...
    'ClassNames',{'setosa','versicolor','virginica'});
%预测
Z=meas(25,3:4);
Zclass = predict(Mdl,Z); 

setosaIndex = strcmp(Mdl.ClassNames,'setosa');
estimates = Mdl.DistributionParameters{setosaIndex,1};
%使用点表示法显示特定高斯拟合的参数,例如显示setosa中第一个特征的拟合。
%estimates = 2×1
%1.4620
%0.1737
%绘制高斯轮廓
figure
gscatter(X(:,1),X(:,2),Y);
h = gca;
cxlim = h.XLim;
cylim = h.YLim;
hold on
Params = cell2mat(Mdl.DistributionParameters); 
Mu = Params(2*(1:3)-1,1:2); % Extract the means
Sigma = zeros(2,2,3);
for j = 1:3
    Sigma(:,:,j) = diag(Params(2*j,:)).^2; % Create diagonal covariance matrix
    xlim = Mu(j,1) + 4*[1 -1]*sqrt(Sigma(1,1,j));
    ylim = Mu(j,2) + 4*[1 -1]*sqrt(Sigma(2,2,j));
    ezcontour(@(x1,x2)mvnpdf([x1,x2],Mu(j,:),Sigma(:,:,j)),[xlim ylim]);
        % Draw contours for the multivariate normal distributions 
end
h.XLim = cxlim;
h.YLim = cylim;
title('Naive Bayes Classifier -- Fisher''s Iris Data');
xlabel('Petal Length (cm)');
ylabel('Petal Width (cm)');
hold off;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值