水果分类:模式识别入门

可以联系作者QQ:1792975930

内容:我们有三个苹果样本和三个桔子样本:
苹果:x表示
桔子:o表示
使用Matlab软件用二维图形表示这6个训练样本。 我们拿来一个水果,让计算机自己去判别放在电子称和CCD摄像头下,测得数据为。给出判别的结果,并使用Matlab软件在原图中表示出这个测试样本。

方法描述及判别结果
步骤如下:
(1)首先将六个训练样本投影到二维特征空间当中。
(2)选择方法
方法一:最小距离法(利用线性分类线方程)
在这里插入图片描述
方法二:最近邻法
在这里插入图片描述
两种方法的结果:
根据以上方法一进行Matlab两类水果分类的代码(见附录)实现,所得的所有样本的显示结果如图1所示,所得的未知样本测试结果如图3-2所示:

在这里插入图片描述
图1 所有样本(含类中心)二维展示图
类中心:三个圆圈中心的X是桔子的类中心;三个X中心的圆圈是苹果的类中心。

方法一分类结果:
在这里插入图片描述
!](https://img-blog.csdnimg.cn/401c3e1149824a8e886cba1b2e13359a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARGF0YV9DYWl4dWt1bg==,size_17,color_FFFFFF,t_70,g_se,x_16)

方法二:结果如下

在这里插入图片描述

有老师给的模式识别作业标准参考程序,放在资料区下载。
文件内容具体形式:
在这里插入图片描述

笔者介绍:某智科卑微牛马,一项省级大创已结项,一项国家级大创和一项校级大创已成功立项,都交给小自己一届的学弟去做,参加的挑战杯项目在其余队友参加大创后也获得了省级优秀和国家级优秀结项。同时组织并担任了2022年挑战杯、两项互联网+、电子商务大赛、舞蹈机器人大赛、“创青春”青年创新创业大赛的队长,参加过节能减排大赛、调研河北大赛、数学建模美赛、蓝桥杯省赛、机器人国赛等比赛若干,获得过舞蹈机器人一等、电子商务大赛二等、挑战杯三等、节能减排省一等、创新创业优秀个人、社会实践优秀个人、冬奥云支教等奖项。

程序下载说明:作者所有的实验、课设验收基本都是优,也不缺这几米,不过不想自己的文章或者作品烂大街,想留点门槛,应该是几米这样子,作品都是保证高质量的,给有需要的学弟学妹们学习,大部分还是免费的,因为一些大型的文件不好上传,故放在付费资料区下载,真的非常良心!!

自写程序附录(可能matlab格式不支持,可私信我)


附录
clc;
clear;
x1=[220,240,230];y1=[90 95 90]; %苹果
x2=[90 85 85];y2=[85 80 85];    %桔子
test=[200,85]; x3=200;y3=85;  %测试数据点
 
%画图思路
plot(x1,y1,'x','color','r')  %做标记x
hold on;
plot(x2,y2,'o','color','b')  %做标记o
hold on;
plot(x3,y3,'*','color','k')   %做标记+
 
 
 
xlabel('重量/克'),
ylabel('红色程度/%');
axis([80,240,75,100]);   %x,y轴的范围
grid on;  %打网格
title('水果分类','fontsize',14);   %标题


%基于类中心的最小距离法
t1x=mean(x1);t1y=mean(y1);                  %经平均值计算得苹果类中心点
t2x=mean(x2);t2y=mean(y2);                   %经平均值计算得桔子类中心点
R1=[t1x,t1y]';R2=[t2x,t2y]';                   
k=-(t1x-t2x)/(t1y-t2y);b=(t1y+t2y)/2-k*(t1x+t2x)/2;x=0:1000;  %算判别线参数
y=k*x+b;                                     %判别线函数
plot(y,'-b')                                    %画判别线
d1=sqrt((t1x-x3)^2+(t1y-y3)^2);                %计算测试样本与苹果指定样本的距离
d2=sqrt((t2x-x3)^2+(t2y-y3)^2);                %计算测试样本与桔子中指定样本的距离
f=d1-d2;                                     %线性分类线方程
if f>0                                       %此时测试样本与桔子的距离较近
   fprintf('桔子\n');
elseif f<0                                   %此时测试样本与苹果的距离较近
   fprintf('苹果\n');
else                                         %该情况下分类失败
   fprintf('分类失败\n');
End

%最近邻法(最近距离的就是)
L1=length(x1);                               %拿出矩阵x1的长度
for i=1:L1                                   %取计算器按长度进行循环
    d(i)=sqrt((x1(i)-x3)^2+(y1(i)-y3)^2);        %苹果样本的计算数值放在d中编号的前半部分(1,2,3) 
    d(i+L1)=sqrt((x2(i)-x3)^2+(y2(i)-y3)^2);    %桔子样本的计算数值放在d的后半部分(4,5,6)
end
m=find(min(d));                %find函数找到最小的d的编号,靠近最小的就是最近的
if m<=L1                                    %前半部分长度是苹果的编号
   fprintf('苹果\n');                         %代表靠近苹果
else                                        %后半部分长度是桔子的编号
   fprintf('桔子\n');                         %代表靠近桔子
end



Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐