data=xlsread('C:\Users\Administrator\Desktop\赵冰清201961206068\iris.csv');
Iris1=data(1:50,1:4);
Iris2=data(51:100,1:4);
Iris3=data(101:150,1:4);
%类均值向量
m1 = mean(Iris1);
m2 = mean(Iris2);
m3 = mean(Iris3);
%各类内离散度矩阵
s1 = zeros(4);
s2 = zeros(4);
s3 = zeros(4);
for i=1:1:30
s1 = s1 + (Iris1(i,:) - m1)'*(Iris1(i,:) - m1);
end
for i=1:1:30
s2 = s2 + (Iris2(i,:) - m2)'*(Iris2(i,:) - m2);
end
for i=1:1:30
s3 = s3 + (Iris3(i,:) - m3)'*(Iris3(i,:) - m3);
end
%总类内离散矩阵
sw12 = s1 + s2;
sw13 = s1 + s3;
sw23 = s2 + s3;
%投影方向
w12 = ((sw12^-1)*(m1 - m2)')';
w13 = ((sw13^-1)*(m1 - m3)')';
w23 = ((sw23^-1)*(m2 - m3)')';
%判别函数以及阈值T(即w0)
T12 = -0.5 * (m1 + m2)*inv(sw12)*(m1 - m2)';
T13 = -0.5 * (m1 + m3)*inv(sw13)*(m1 - m3)';
T23 = -0.5 * (m2 + m3)*inv(sw23)*(m2 - m3)';
kind1 = 0;
kind2 = 0;
kind3 = 0;
newiris1=[];
newiris2=[];
newiris3=[];
for i=31:50
x = Iris1(i,:);
g12 = w12 * x' + T12;
g13 = w13 * x' + T13;
g23 = w23 * x' + T23;
if((g12 > 0)&(g13 > 0))
newiris1=[newiris1;x];
kind1=kind1+1;
elseif((g12 < 0)&(g23 > 0))
newiris2=[newiris2;x];
elseif((g13 < 0)&(g23 < 0))
newiris3=[newiris3;x];
end
end
for i=31:50
x = Iris2(i,:);
g12 = w12 * x' + T12;
g13 = w13 * x' + T13;
g23 = w23 * x' + T23;
if((g12 > 0)&(g13 > 0))
newiris1=[newiris1;x];
elseif((g12 < 0)&(g23 > 0))
kind2=kind2+1;
newiris2=[newiris2;x];
elseif((g13 < 0)&(g23 < 0))
newiris3=[newiris3;x];
end
end
for i=31:50
x = Iris3(i,:);
g12 = w12 * x' + T12;
g13 = w13 * x' + T13;
g23 = w23 * x' + T23;
if((g12 > 0)&(g13 > 0))
newiris1=[newiris1;x];
elseif((g12 < 0)&(g23 > 0))
newiris2=[newiris2;x];
elseif((g13 < 0)&(g23 < 0))
kind3=kind3+1;
newiris3=[newiris3;x];
end
end
correct=(kind1+kind2+kind3)/60;
fprintf('\n综合正确率:%.2f%%\n\n',correct* 100);