📄 bayes.m
字号:
%--------------------------------
% Bayes分类
%--------------------------------
%x1,x2,x3分别为训练集资料矩阵
x1=[0 0;2 1;1 0];
x2=[-1 1;-2 0;-2 -1];
x3=[0 -2;0 -1;1 -2];
%求取各类的均值,协方差矩阵和逆矩阵
c1=cov(x1);c2=cov(x2);c3=cov(x3);
t1=diag(c1);t2=diag(c2);t3=diag(c3); %t1,t2,t3分别为协方差矩阵对角元素产生的列向量
c1=diag(t1);c2=diag(t2);c3=diag(t3); %c1,c2,c3分别为x1,x2,x3的协方差矩阵
cc1=inv(c1);cc2=inv(c2);cc3=inv(c3); %cc1,cc2,cc3分别为c1,c2,c3的逆矩阵
d1=det(c1);d2=det(c2);d3=det(c3); %d1,d2,d3分别为c1,c2,c3的行列式的值
u1=mean(x1);u2=mean(x2);u3=mean(x3); %u1,u2,u3分别为x1,x2,x3的均值
u1=u1';u2=u2';u3=u3';
%判断点x属于哪一类
p=[-2;2];
p1=-0.5*(p-u1)'*cc1*(p-u1);
p2=-0.5*(p-u2)'*cc2*(p-u2);
p3=-0.5*(p-u3)'*cc3*(p-u3);
if p1>p2
if p1>p3
w=1;
else
w=3;
end
elseif p2>p3
w=2;
else w=3;
end
fprintf('X=(-2,2)属于第%g类\n',w);
%协方差矩阵不相等的情况
G=sym('[x;y]');
g1=simplify((-0.5)*G'*cc1*G+(cc1*u1)'*G-0.5*u1'*cc1*u1);
g2=simplify((-0.5)*G'*cc2*G+(cc2*u2)'*G-0.5*u2'*cc2*u2);
g3=simplify((-0.5)*G'*cc3*G+(cc3*u3)'*G-0.5*u3'*cc3*u3);
g12=simplify(g1-g2); %1,2类的分界线
g23=simplify(g2-g3); %2,3类的分界线
g31=simplify(g3-g1); %3,1类的分界线
%画出三类分界线,分别用不同的颜色标示
h1=ezplot(g12);hold on;
set(h1,'color','red');
h2=ezplot(g23);hold on;
set(h2,'color','blue');
h3=ezplot(g31);hold on;
set(h3,'color','yellow');
legend('g12','g12','g23','g31');
%标出三类训练样本,分别用不同的颜色和形状标示
plot(x1(1,1),x1(1,2),'or');hold on;
plot(x1(2,1),x1(2,2),'or');hold on;
plot(x1(3,1),x1(3,2),'or');hold on;
plot(x2(1,1),x2(1,2),'xb');hold on;
plot(x2(2,1),x2(2,2),'xb');hold on;
plot(x2(3,1),x2(3,2),'xb');hold on;
plot(x3(1,1),x3(1,2),'*y');hold on;
plot(x3(2,1),x3(2,2),'*y');hold on;
plot(x3(3,1),x3(3,2),'*y');hold on;
title('bayes分类:协方差矩阵不等');
xlabel('x1'),ylabel('x2');
grid;
box;
hold off
%协方差矩阵相等的情况
c=c1+c2+c3;
cc=inv(c);
Q=sym('[x;y]');
gq1=simplify((cc*u1)'*Q-0.5*u1'*cc*u1);
gq2=simplify((cc*u2)'*Q-0.5*u2'*cc*u2);
gq3=simplify((cc*u3)'*Q-0.5*u3'*cc*u3);
gq12=simplify(gq1-gq2); %1,2类的分界线
gq23=simplify(gq2-gq3); %2,3类的分界线
gq31=simplify(gq3-gq1); %3,1类的分界线
figure;
%画出三类分界线,分别用不同的颜色标示
hq1=ezplot(gq12);hold on;
set(hq1,'color','red');
hq2=ezplot(gq23);hold on;
set(hq2,'color','blue');
hq3=ezplot(gq31);hold on;
set(hq3,'color','yellow');
legend('gq12','gq23','gq31');
%标出三类训练样本,分别用不同的颜色和形状标示
plot(x1(1,1),x1(1,2),'or');hold on;
plot(x1(2,1),x1(2,2),'or');hold on;
plot(x1(3,1),x1(3,2),'or');hold on;
plot(x2(1,1),x2(1,2),'xb');hold on;
plot(x2(2,1),x2(2,2),'xb');hold on;
plot(x2(3,1),x2(3,2),'xb');hold on;
plot(x3(1,1),x3(1,2),'*y');hold on;
plot(x3(2,1),x3(2,2),'*y');hold on;
plot(x3(3,1),x3(3,2),'*y');hold on;
title('bayes分类:协方差矩阵相等');
xlabel('x1'),ylabel('x2');
grid;
V=[-3,3,-3,3];
axis(V);
hold off
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -