实验三 最小错误率的贝叶斯分类
作者:互联网
利用贝叶斯后验概率确定分类:
设有19人进行体检,结果如下表。但事后发现4人忘了写性别,试问,这4人是男是女?
序号 | 身高 | 体重 | 性别 | 序号 | 身高 | 体重 | 性别 |
1 | 170 | 68 | 男 | 11 | 140 | 62 | 男 |
2 | 130 | 66 | 女 | 12 | 150 | 64 | 女 |
3 | 180 | 71 | 男 | 13 | 120 | 66 | 女 |
4 | 190 | 73 | 男 | 14 | 150 | 66 | 男 |
5 | 160 | 70 | 女 | 15 | 130 | 65 | 男 |
6 | 150 | 66 | 男 | 16 | 140 | 70 | α? |
7 | 190 | 68 | 男 | 17 | 150 | 60 | β? |
8 | 210 | 76 | 男 | 18 | 145 | 65 | γ? |
9 | 100 | 58 | 女 | 19 | 160 | 75 | δ? |
10 | 170 | 75 | 男 |
C=2。男—1类,女—2类。
%基础实验
self_mvnrnd([1 3],[1.5,0;0,1],100,0.5,[3,1],[1,0.5;0.5,2],100,0.5)
self_mvnrnd([1 3],[1.5,0;0,1],100,0.4,[3,1],[1,0.5;0.5,2],100,0.6)
%拓展实验(e)
self_mvnrnd([1 3],[1.5,0;0,1],100,0.5,[2,2],[1,0.5;0.5,2],100,0.5)
self_mvnrnd([1 3],[1.5,0;0,1],100,0.4,[2,2],[1,0.5;0.5,2],100,0.6)
%拓展实验(f)
self_mvnrnd([1 3],[1.5,0;0,1],100,0.5,[4,0],[1,0.5;0.5,2],100,0.5)
self_mvnrnd([1 3],[1.5,0;0,1],100,0.4,[4,0],[1,0.5;0.5,2],100,0.6)
%拓展实验(g)
self_mvnrnd([1 3],[1.5,1;1,1],100,0.5,[3,1],[1,0.5;0.5,2],100,0.5)
self_mvnrnd([1 3],[1.5,1;1,1],100,0.4,[3,1],[1,0.5;0.5,2],100,0.6)
%功能:函数输入参数为8,画出二类样本的二维散点图和贝叶斯分类后的二维散点图
%参数1,2,3,4分别为一类模式样本的均值矢量,协方差矩阵,样本数,先验概率;
%参数5,6,7,8分别为另一类模式样本的均值矢量,协方差矩阵,样本数,先验概率;
%例子:self_mvnrnd([1 3],[1.5,0;0,1],100,0.5,[3,1],[1,0.5;0.5,2],100,0.5)
function self_mvnrnd(varargin)%可自定义参数的函数
if(nargin==8)%判定输入参数是否为8
w1=mvnrnd(varargin{1},varargin{2},varargin{3});%第一类
w2=mvnrnd(varargin{5},varargin{6},varargin{7});%第二类
figure(1);
plot(w1(:,1),w1(:,2),'bo');%蓝色o为第一类
hold on
plot(w2(:,1),w2(:,2),'g*');%绿色*为第二类
title('200个随机样本,蓝色o为第一类,绿色*为第二类');
w=[w1;w2];
n1=0;%第一类正确个数
n2=0;%第二类正确个数
figure(2);
%贝叶斯分类器
for i=1:(varargin{3}+varargin{7})
x=w(i,1);
y=w(i,2);
g1=mvnpdf([x,y],varargin{1},varargin{2})*varargin{4};
g2=mvnpdf([x,y],varargin{5},varargin{6})*varargin{8};
if g1>g2
if 1<=i&&i<=varargin{3}
n1=n1+1;%第一类正确个数
plot(x,y,'bo');%蓝色o表示正确分为第一类的样本
hold on;
else
plot(x,y,'r^');%红色的上三角形表示第一类错误分为第二类
hold on;
end
else
if varargin{3}<=i&&i<=(varargin{3}+varargin{7})
n2=n2+1;%第二类正确个数
plot(x,y,'g*');%绿色*表示正确分为第二类的样本
hold on;
else
plot(x,y,'rv');%红色的下三角形表示第二类错误分为第一类
hold on;
end
end
end
r1_rate=n1/varargin{3};%第一类正确率
r2_rate=n2/varargin{7};%第二类正确率
gtext(['第一类正确率:',num2str(r1_rate*100),'%']);
gtext(['第二类正确率:',num2str(r2_rate*100),'%']);
title('最小错误率贝叶斯分类器');
else disp('只能输入参数个数为8');
end
标签:mvnrnd,1.5,错误率,self,0.5,最小,贝叶斯,varargin,100 来源: https://blog.csdn.net/Joe_wuzhi/article/details/121468969