📄 matlab bayes判别.txt
字号:
Bayes判别matlab源程序2008年07月15日 星期二 22:11在分类判别中,bayes判别的确具有明显的优势,与模糊,灰色,物元可拓相比,判别准确率一般都会高些,而BP神经网络由于调试麻烦,在调试过程中需要人工参与,而且存在明显的问题,局部极小点和精度与速度的矛盾,以及训练精度和仿真精度间的矛盾,等,尽管是非线性问题的一种重要方法,但是在我们项目中使用存在一定的局限,基于此,最近两天认真的研究了bayes判别,并写出bayes判别的matlab程序,与spss非逐步判别计算结果一致。现对外共享下:
clear;clc;
yangben=[
1 4.1 70 1.8 2.1 1.3 6.6
1 4.4 78 2.2 1.9 1.5 2.8
1 2.8 84 1.6 2.7 1.6 10.6
1 6.4 88 2 2.3 1.2 8.3
2 8.2 74 3.7 1.9 1.1 2.9
2 10.2 81 3.5 1.8 1.7 2.7
2 14.2 70 2.9 2 0.9 3.2
2 9.8 78 2.5 1.9 0.7 3.4
2 16.6 92 6.5 2.4 0.6 3
3 19.4 50 8.2 1.1 1.5 3.2
3 22.6 46 9.8 1.1 0.8 3.5
3 23.8 35 8.8 1.5 1.3 4.3
];
g=3;
[m,n]=size(yangben);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:g
groupNum(i)=0;
group(i)=0;
for j=1:m
if yangben(j,1)==i
group(i)=group(i)+1;
end
end
if i==1
groupNum(i)=group(i);
else
groupNum(i)=groupNum(i-1)+group(i);
end
end
group
groupNum; %计算分类个数数组
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
GroupMean=[];
for i=1:g
if i==1
low=1;
up=groupNum(i);
else
low=groupNum(i-1)+1;
up=groupNum(i);
end
matrix=yangben(low:up,:);
MatrixMean=mean(matrix); %各分类组平均值
GroupMean=[GroupMean;MatrixMean]; for i=low:up
for j=2:n
C(i,j-1)=yangben(i,j)-MatrixMean(j);
end
end
endC
GroupMean
V=C'*C/(m-g);
V_inv=inv(V) %对矩阵V求逆
GroupMean=GroupMean(:,2:n)
Q1=GroupMean*V_inv
for i=1:g
lnqi(i)=log(group(i)/m);
tmp=GroupMean(i,:);
Q2(i)=lnqi(i)-0.5*tmp*V_inv*tmp';
end
lnqi
Q2
b=[
3.2 70 2.3 2.1 1.6 2.8
2 88 1.6 1.5 1.2 3.2
8.2 69 2.9 1.7 0.9 3.1
21.1 43 5.6 0.8 0.6 2.7
23.6 85 8.3 1.5 1.1 3.3
]; % 判别的样本
[u,v]=size(b)
result=[]
for i=1:u
x=b(i,:)
y=Q1*x'+Q2'
result=[result y];
end
result
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -