clc;
clear;
w1=[171 53;168 57;160 58;161 45;153 51;160 53;165 53.2;163 44;164 55;
160 50.5;161 50;154 63;152 50;166 52;165 55;183 67;165 57.5;
169 57.1;170 60;163 47;165 50;160 51;140 46;170 60;171 57;164 55;
149 50;167 57;165 57;163 44;163 50;166 60;166 47;168 57;160 50;
163 47.5;157 50;163 51;169 50;167 54;165 52;157 46;163 50;162 53;
153 65;166 55;170 56;160 45;157 40;160 46];
w2=[175 68;176 73;187 70;172 70;174 69;164 53;175 59;180 63;176 80;
180 70;178 65;175 60;175 70;173 60;177 58;168 56;170 57;175 65;
178 77;165 56;170 57.5;168 55.1;169 65;178 67;179 68.5;172 55;
172 65;170 57;165 55;177 70;170 68;175 66;172 60;178 69;176 66;
167 60;178 90;173 65;171 68;180 72;173 60;180 80;169 60;171 58;
174 65;176 66;174 68;171 66;180 84;175 70];
%算各类样本的均值
tran_m1=mean(w1);
%计算男生样本的均值
tran_m2=mean(w2);
m1=tran_m1';
m2=tran_m2';
sb=(m1-m2)*(m1-m2)';%sb是样本间离散度矩阵
%算女生的样本离散度
s1=zeros(2);%s1表示女生样本的类内离散度矩阵
for n=1:50
temp = (w1(n,:)'-m1)*(w1(n,:)'-m1)';%w1(n,:)表示矩阵w1的第n行的所有元素
s1=s1+temp;
end;%计算s1结束
s2=zeros(2);%s2表示男生样本的类内离散度矩阵
for n=1:50
temp = (w2(n,:)' - m2)*(w2(n,:)' - m2)';
s2 = s2+temp;
end;%计算s2结束
sw=s1+s2;%sw为总类内离散度矩阵
vector_w=inv(sw)*(m1-m2);%vector_w就是所求的w*也就是fisher准则函数取极大值时的解
%计算在一维Y空间的各类样本均值
ave_m1 = vector_w'*m1;
ave_m2 = vector_w'*m2;
%计算w0
n1=50;n2 = 50;%两类训练样本数
pw1 = 0.5;%w1的概率
pw2 = 0.5;%w2的概率
w0 = (ave_m1+ave_m2)/2 + log(pw1/pw2)/(n1+n2-2);
norm_w=sqrt(vector_w'*vector_w);%求vector_w的模
sample=[178 73;190 85;178 74;168 63;172 63;181 67;185 76;186 74;
169 60;178 90;178 70;176 58;174 68;178 60;176 72;180 65;175 65;
182 60;172 65;170 65;162 44;155 48;173 54;168 53;163 57;155 48;
155 40;163 46;155 41;167 55;164 55;161 45;160 60; 156 49;163 50; ];
right=0;
wrong=0;
for n=1:35
if(vector_w'*sample(n,:)' - w0>0)%满足被判为女生的条件
right=right+1;
%map_point=6*vector_w'*sample(n,:)'*vector_w'/norm_w;%把3维样本投影到一维
else%判断为男生
wrong=wrong+1;
%map_point=6*vector_w'*sample(n,:)'*vector_w'/norm_w;
end;
end;
right
wrong
评论1