linjinfa1.m
来自「这是一个模式识别中的最近邻分类算法的一个简单仿真分类实例」· M 代码 · 共 78 行
M
78 行
clear all;
%PCA判决法,这个是把样本放在一起计算其协方差矩阵,然后求特征向量,最大特征值所对应的特征向量是投影的方向,最近邻法判决分类
M = load('E:\研究生课程\模式识别课程\homework1_1007\FEMALE.TXT');
N = load('E:\研究生课程\模式识别课程\homework1_1007\MALE.TXT');
MIX=[M;N];
m=mean(MIX);
s=cov(MIX);
MIX=MIX';
m=m';
s=s';
[A,U]=eig(s)% A是特征向量U是特征值对角阵
p1=A(:,1);
p2=A(:,2);
w=p2;
M=M';
N=N';
%把test1.txt的值读出来,放如数组[a1,a2,a3]中进行测试
[a1,a2,a3]=textread('E:\研究生课程\模式识别课程\homework1_1007\test1.TXT','%d %d %c',35);
right=0;
wrong=0;
a=[a1,a2];
a=a';
%把样本数据转到w方向上,二维变成一维
for i=1:100
yangben(i)=w'*MIX(:,i);
end
for i=1:35
a_w(i)=w'*a(:,i) ;
end
for i=1:35
for j=1:100
cha(j)=norm(a_w(i)-yangben(j));
end
[y,I]=min(cha);
if(I==50|I<50)
result='f';
plot(a(1,i),a(2,i),'r*');
hold on;
end;
if(I>50)
result='m';
plot(a(1,i),a(2,i),'b+');
hold on;
end
if(strcmp(a3(i,1),result)==1)
right=right+1;
elseif(strcmp(a3(i,1),result)==0)
wrong=wrong+1;
end
end
xlabel('测试样本身高值');
ylabel('测试样本体重值');
title('最邻近法的分类结果,红色*表示被分为女生点,蓝色+表示被分为男生的点');
right
wrong
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?