?? experiment1.m
字號:
function y=experiment1()
m1=[0.42,-0.087,0.58;-0.2,-3.3,-3.4;1.3,-0.32,1.7;0.39,0.71,0.23;-1.6,-5.3,-0.15;-0.029,0.89,-4.7;-0.23,1.9,2.2;0.27,-0.3,-0.87;-1.9,0.76,-2.1;0.87,-1.0,-2.6];
m2=[-0.4,0.58,0.089;-0.31,0.27,-0.04;0.38,0.055,-0.035;-0.15,0.53,0.011;-0.35,0.47,0.034;0.17,0.69,0.1;-0.011,0.55,-0.18;-0.27,0.61,0.12;-0.065,0.49,0.0012;-0.12,0.054,-0.063];
m3=[0.83,1.6,-0.014;1.1,1.6,0.48;-0.44,-0.41,0.32;0.047,-0.45,1.4;0.28,0.35,3.1;-0.39,-0.48,0.11;0.34,-0.079,0.14;-0.3,-0.22,2.2;1.1,1.2,-0.46;0.18,-0.11,-0.49];
% a) 對類m1中的3個特征分別求最大似然估計u,d
u1=mean(m1(1:10,1))
d1=var(m1(1:10,1))
u12=mean(m1(1:10,2))
d2=var(m1(1:10,2))
u3=mean(m1(1:10,3))
d3=var(m1(1:10,3))
% b) 對m1中任意兩個特征組合求最大似然估計
u12=mean(m1(1:10,1:2))
D12=cov(m1(1:10,1:2))
u13=mean(m1(1:10,1:2:3))
D13=cov(m1(1:10,1:2:3))
u23=mean(m1(1:10,2:3))
D23=cov(m1(1:10,2:3))
% c) 對m1中3個特征的組合求最大似然估計
u=mean(m1(1:10,:))
D=cov(m1(1:10,:))
% d) 假設高斯模型可分離,估計w2中的均值和協方差矩陣
u=mean(m2(1:10,:))
d=var(m2(1:10,:));
D=diag(d)
%--------------------------------------------------------------------------
% b) 對類別m2,m3,計算最優投影方向w
w=fisher(m2,m3);
% c) 畫出投影前的點用‘*’標記,表示最優方向w的直線,并且標記出投影后的點在直線上的位置,用‘.’標記
subplot(1,2,1)
x1=m2(1:10,1);y1=m2(1:10,2);z1=m2(1:10,3);
x2=m3(1:10,1);y2=m3(1:10,2);z2=m3(1:10,3);
plot3(x1,y1,z1,'r*',x2,y2,z2,'b*')
hold on
x=-2:0.1:2;
y=w(2,1)/w(1,1)*x;
z=w(3,1)/w(1,1)*x;
plot3(x,y,z)
rotate3D on
subplot(1,2,2)
x=-2:0.1:2;
y=w(2,1)/w(1,1)*x;
z=w(3,1)/w(1,1)*x;
plot3(x,y,z)
hold on
% 對w2中點投影
for i=1:10
x=(m2(i,1)+w(2,1)/w(1,1)*m2(i,2)+w(3,1)/w(1,1)*m2(i,3))/(1+(w(2,1)/w(1,1))^2+(w(3,1)/w(1,1))^2);
y=w(2,1)/w(1,1)*x;
z=w(3,1)/w(1,1)*x;
plot3(x,y,z,'r*')
end
hold on
% 對w3中的點投影
for i=1:10
x=(m3(i,1)+w(2,1)/w(1,1)*m3(i,2)+w(3,1)/w(1,1)*m3(i,3))/(1+(w(2,1)/w(1,1))^2+(w(3,1)/w(1,1))^2);
y=w(2,1)/w(1,1)*x;
z=w(3,1)/w(1,1)*x;
plot3(x,y,z,'b*')
end
rotate3D on
% d) 用用一維高斯函數擬合,并且求分類決策面
for i=1:10
mw1(i)=m2(i,:)*w;
mw2(i)=m3(i,:)*w;
end
% mw1
% mw2
[u1,d1]=normfit(mw1);
[u2,d2]=normfit(mw2);
x=(log10(d1/d2)+(u2^2/d2-u1^2/d1))/2*(u1/d1-u2/d2)
% e)求分類誤差
for i=1:10
if mw1(i)>x
c1(i)=1;
elseif mw1(i)<x
c1(i)=-1;
end
end
for i=1:10
if mw2(i)>x
c2(i)=-1;
elseif mw2(i)<x
c2(i)=1;
end
end
k=0;
for i=1:10
if (c1(i)==-1)||(c2(i)==-1)
k=k+1;
end
end
p=(20-k)/20
% f) 使用非最優方向w=(1.0,2.0,-1.5)’重復(d)(e)兩個步驟
w=[1,2,-1.5].'
for i=1:10
mw1(i)=m2(i,:)*w;
mw2(i)=m3(i,:)*w;
end
% mw1
% mw2
[u1,d1]=normfit(mw1);
[u2,d2]=normfit(mw2);
x=(log10(d1/d2)+(u2^2/d2-u1^2/d1))/2*(u1/d1-u2/d2)
for i=1:10
if mw1(i)>x
c1(i)=1;
elseif mw1(i)<x
c1(i)=-1;
end
end
for i=1:10
if mw2(i)>x
c2(i)=-1;
elseif mw2(i)<x
c2(i)=1;
end
end
k=0;
for i=1:10
if (c1(i)==-1)||(c2(i)==-1)
k=k+1;
end
end
p=(20-k)/20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function w=fisher(w1,w2) %%w1,w2為10*3的矩陣,w為線性判別方法的投影向量
u1=mean(w1(1:10,:));
u2=mean(w2(1:10,:));
S1=(w1(1,:)-u1).'*(w1(1,:)-u1);
S2=(w2(1,:)-u2).'*(w2(1,:)-u2);
for i=2:10
S1=S1+(w1(i,:)-u1).'*(w1(i,:)-u1);
S2=S2+(w2(i,:)-u2).'*(w2(i,:)-u2);
end
Sw=S1+S2;
w=inv(Sw)*(u1-u2).'
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -