两类水果分类问题(模式识别课堂作业)

问题

我们有三个苹果样本和三个桔子样本:
苹果:x表示 [220,90]’ [240,95]’ [220,95]’
桔子:o表示 [80,85]’ [85,80]’ [85,85]’
使用Matlab软件用二维图形表示这6个训练样本。我们拿来一个水果,让计算机自己去判别放在电子称和CCD摄像头下,测得数据为[180,90]。给出判别的结果,并使用Matlab软件在原图中表示出这个测试样本。可以使用最近邻法,或者基于类中心的最小距离判断。
方法描述及判别结果
方法描述:①基于类中心的最小距离法
采用最小距离法对需要测试的样本[180,90]进行分类识别。首先找出代表点(模板):
代表点有两种取法一种是指定法,另一种是平均值法。这里采用平均值法,即在两类水果(即苹果和桔子)中,各自将其中一类的3个样本取平均值,得到的两个代表点分别用矩阵R_1和R_2表示,则:
R_1=[■([email protected])] , R_2=[■([email protected])]
计算测试样本与R_1和R_2的距离d_1和d_2,且令函数f(x)=〖d_1〗2-〖d_2〗2,由以下判决规则判断测试样本为哪一类(并作出图来,用线性判别函数直观判别两类区域边界),其中判决规则如下:
{█(&〖f(x)>0⟺d〗_1>d_2⇒test∈桔子@&〖f(x)=0⟺d〗_1 判别结果:判别结果为苹果类。
方法描述:②基于类中心的最小距离法
采用最近邻法对需要测试的样本[180,90]进行分类识别。首先要计算出所有的训练样本与测试样本之间的距离,然后找到最小的距离,最小距离对应的训练样本属于哪一类,就表示该测试样本是哪一类。
判别结果:判别结果为苹果类。

图 1 样本二维显示图
3、附:具体程序如下所示:
Clear;
x1=[220 240 220];y1=[90 95 95]; %苹果样本
x2=[80 85 85];y2=[85 80 85]; %桔子样本
tx=180;ty=90;
test=[tx,ty]’; %测试点

plot(x1,y1,‘x’,x2,y2,‘o’,tx,ty,‘p’); %画点并设置美观
xlabel(‘Weight’,‘fontsize’,10,‘fontname’,‘cambria’),
ylabel(‘Red degree’,‘fontsize’,10,‘fontname’,‘cambria’);
axis([60,260,75,100]);grid on; %设置x和y轴和图片网格,美观作用
title(‘distinguish the kinds of fruit’,‘fontsize’,10,‘fontname’,‘cambria’); %设置标题

%基于类中心的最小距离法
R1x=mean(x1);R1y=mean(y1); %经平均值计算得苹果类中心点
R2x=mean(x2);R2y=mean(y2); %经平均值计算得桔子类中心点
R1=[R1x,R1y]’;R2=[R2x,R2y]’;
k=-(R1x-R2x)/(R1y-R2y);b=(R1y+R2y)/2-k*(R1x+R2x)/2;x=0:1000; %算判别线参数
y=k*x+b; %判别线函数
plot(y,’-b’) %画判别线
d1=sqrt((R1x-tx)2+(R1y-ty)2); %计算测试样本与苹果指定样本的距离
d2=sqrt((R2x-tx)2+(R2y-ty)2); %计算测试样本与桔子中指定样本的距离
f=d1-d2; %线性分类线方程
if f>0 %此时测试样本与苹果的距离较近
fprintf(‘orange\n’);
elseif f<0 %此时测试样本与苹果的距离较近
fprintf(‘apple\n’);
else %该情况下拒绝分类
fprintf(‘refuse to answer\n’);
end
%最近临法
L1=length(x1); %拿出矩阵x1的长度
for i=1:L1 %取计算器按长度进行循环
d(i)=sqrt((x1(i)-tx)2+(y1(i)-ty)2); %苹果样本放在d中编号的前半部分
d(i+L1)=sqrt((x2(i)-tx)2+(y2(i)-ty)2); %桔子样本放在d的后半部分
end
m=find(min(d)); %find函数找到最小的d的编号
if m<=L1 %前半部分长度是苹果的编号
fprintf(‘apple\n’); %代表靠近苹果
else %后半部分长度是桔子的编号
fprintf(‘orange\n’);
end

仿真结果如下:

两类水果分类问题(模式识别课堂作业)_第1张图片两类水果分类问题(模式识别课堂作业)_第2张图片

你可能感兴趣的:(模式识别)