蠓虫分类.doc
《蠓虫分类.doc》由会员分享,可在线阅读,更多相关《蠓虫分类.doc(12页珍藏版)》请在冰豆网上搜索。
河北大学工商学院
课程名称:
数学软件与实验成绩:
综合实验题目——蠓虫分类
课程号:
50c11033
课序号:
01
任课教师:
xxxx
班级:
xxxx
姓名:
xxx
学号:
xxxx
填写日期:
2010/6/4
实验报告题目——蠓虫分类
1.实验问题
蠓虫分类问题:
生物学家试图对两类蠓虫(Af与Apf)进行鉴别,依据的资料是蠓虫的触角和翅膀的长度,已经测得9只Af和6只Apf的数据,(触角长度用x表示,翅膀长度用y表示)具体数据为:
Af类触角和翅膀长度
x
1.24
1.36
1.38
1.38
1.38
1.40
1.48
1.54
1.56
y
1.27
1.74
1.64
1.82
1.90
1.70
1.82
1.82
2.08
Apf类触角和翅膀长度数据
x
1.14
1.18
1.20
1.26
1.28
1.30
y
1.78
1.96
1.86
2.00
2.00
1.96
现需要解决三个问题:
(1)如何凭借原始资料(15对数据,被称之为学习样本)制定一种方法,正确区分两类蠓虫;
(2)依据确立的方法,对题目提供的三个样本:
(1.24,1.80),(1.28,1.84),(1.40,2.04)加以识别;(3)设Af是宝贵的传粉益虫,Apf是某种疾病的载体,是否应该修改分类方法。
2.符号说明
判别函数:
分界线方程:
3.问题分析与建模
3.1问题分析
这是一个判别问题,建模的目标是寻找一种方法对题目提供的三个样本进行判别。
首先根据学习样本的15对数据画出散点图,图中,Af用+标记,Apf用0标记。
编写程序huitu.m(见Matlab求解部分),得到散点图(见下图),观察图形,可以发现,Af的点集中在图中右下方,而Apf的点集中在图中左上方。
客观上存在一条直线L将两类点分开之间,如果确定了直线L并将它作为Af和Apf分界线,就有了判别的方法。
确定直线L应依据问题所给的数据,即学习样本。
设直线的方程为
散点图
对于平面上任意一点,如果该点在直线上,将其坐标代入直线方程则使方程成为恒等式,即方程左端为零;如果点不在直线上,将其坐标代入直线方程,则方程左端不为零。
由于Af和Apf的散点都不在所求的直线上,故将问题所提供的数据代入直线方程左端所得到的表达式的值应有大于0或者小于0两种不同的结果。
3.2数学建模
为了建立判别模型,引入判别函数g(p),当属于Af类时,有
否则
本题目中将用到两种不同的状态,不妨以以“1”和“-1”表示,这里我们可以把这两个值当做权值,当属于Af类时,,否则。
取
于是由所给数据形成约束条件,这是关于判别函数中的三个待定系数的线性方程组:
这是包括三个未知数共15个方程的超定方程组:
使用Matlab可求得上列超定方程组的解。
4.Matlab求解
4.1凭借原始资料正确区分两类蠓虫
编写程序huitu.m,绘制散点图
xy=[1.241.27;1.361.74;1.381.64;1.381.82;1.381.90;
1.401.70;1.481.82;1.541.82;1.562.08;1.141.78;
1.181.96;1.201.86;1.262.00;1.282.00;1.301.96];%样本数据
x=xy(:
1);y=xy(:
2);x1=x(1:
9);y1=y(1:
9);x2=x(10:
15);y2=y(10:
15);
plot(x1,y1,'r+',x2,y2,'bo');%绘制散点图
编写程序mengchong.m,求出超定方程组的解,在散点图中画出分类直线
xy=[1.241.27;1.361.74;1.381.64;1.381.82;1.381.90;
1.401.70;1.481.82;1.541.82;1.562.08;1.141.78;
1.181.96;1.201.86;1.262.00;1.282.00;1.301.96];%样本数据
z=[1;1;1;1;1;1;1;1;1;-1;-1;-1;-1;-1;-1];
x=xy(:
1);y=xy(:
2);x1=x(1:
9);y1=y(1:
9);x2=x(10:
15);y2=y(10:
15);
A=[1.241.271;
1.361.741;
1.381.641;
1.381.821;
1.381.901;
1.401.701;
1.481.821;
1.541.821;
1.562.081;
1.141.781;
1.181.961;
1.201.861;
1.262.001;
1.282.001;
1.301.961];
a=A\z%求解超定方程组
x=1.10:
0.02:
1.60;
y=(-a
(1)*x-a(3))/a
(2);%确定分界线方程
plot(x1,y1,'x',x2,y2,'*',x,y)%在散点图中画出分界线
样本散点和分界线
样本散点和分界线图1
程序执行后,从图形窗口将得到样本散点和分界线图(如下图所示)
样本散点和分界线图1
从命令窗口得到运行结果
a=
6.6455
-2.9128
-3.3851
所以直线方程
中的三个待定系数分别为
a1=6.6455
a2=-2.9128
a3=-3.3857
所以判别直线方程为
6.6455x-2.9128y-3.3857=0
判别函数为
g(P)=6.6455x-2.9128y-3.3857
编写程序yanzheng.m,将15个学习样本的所有数据依次代入判别函数g(P)
x=[1.241.361.381.381.381.401.481.541.561.141.181.201.261.281.30];
y=[1.271.741.641.821.901.701.821.822.081.781.961.862.002.001.96];
g=6.6455*x-2.9128*y-3.3857
运行程序可得
g=
1.15550.58391.00810.48380.25080.96621.14831.54710.9227-0.9946-1.2531-0.8289-0.8380-0.7051-0.4556
因为前9个g(P)的值为正数,后6个g(P)的值为负数。
根据判别函数g(P)定义知,前9个学习样本为Af类,后6个学习样本为Apf类。
这与学习样本本身是一致的。
4.2对题目提供的三个样本加以识别
题目提供了三个样本供判别,它们的数据列表如下
编号
1
2
3
触角长度x
1.24
1.28
1.40
翅膀长度y
1.80
1.84
2.04
编写程序panduan.m,将这三组数据代入判别函数
x=[1.241.281.40];
y=[1.801.842.04];
g=6.6455*x-2.9128*y-3.3857
运行程序可得
g=
-0.3883-0.2390-0.0241
所以,由判别函数判别三个新蠓虫的类属,均判为Apf类。
4.3若Af是宝贵的传粉益虫,Apf是某种疾病的载体,修改的分类方法
上述的解决问题方案在解题过程中分别使用权值“1”和“-1”代表正数和负数来完成的。
这只是一种人为的规定,并不是一成不变的。
如果Af是宝贵的传粉益虫,Apf是某种疾病的载体,可以将超定方程组的右端项中的权值“-1”改为其它的负数,至于具体的修改数值不仅与原来的15个样本有关,还与保护传粉益虫Af重要,还是消灭传病害虫Apf重要有关。
修改数值后,重新求超定方程组的解获得分类边界直线的方程。
这样将与前面所求分类边界直线的方程不一样,当然对新给定的蠓虫的翅膀和触角长度数据来做判断其结果也是不同的。
例如这里以最大程度的消灭传病害虫Apf为主,将权值“-1”改为“-2”,修改部分数据,得到mengchong1.m
xy=[1.241.27;1.361.74;1.381.64;1.381.82;1.381.90;
1.401.70;1.481.82;1.541.82;1.562.08;1.141.78;
1.181.96;1.201.86;1.262.00;1.282.00;1.301.96];%样本数据
z=[1;1;1;1;1;1;1;1;1;-2;-2;-2;-2;-2;-2];%数据更改
x=xy(:
1);y=xy(:
2);x1=x(1:
9);y1=y(1:
9);x2=x(10:
15);y2=y(10:
15);
A=[1.241.271;
1.361.741;
1.381.641;
1.381.821;
1.381.901;
1.401.701;
1.481.821;
1.541.821;
1.562.081;
1.141.781;
1.181.961;
1.201.861;
1.262.001;
1.282.001;
1.301.961];
a=A\z%求解超定方程组
x=1.10:
0.02:
1.60;
y=(-a
(1)*x-a(3))/a
(2);%确定分界线方程
plot(x1,y1,'x',x2,y2,'*',x,y)%在散点图中画出分界线
程序执行后,从图形窗口将得到新的分界线图(如下图所示)
样本散点和分界线图2
从图形中可以看出,在所给出的样本中,有一只Af类蠓虫被分到了Apf类一侧,这里可以把它作为特例看待,从总体上看,这种分类方式依然是科学的,因为这种分类方式能更好的趋利避害。
同样从命令窗口得到运行结果,
a=
9.9683
-4.3692
-5.5776
编写程序panduan1.m,将需要判断的三组数据代入新的判别函数g(P)=9.9683x-4.3692y-5.5776
x=[1.241.281.40];
y=[1.801.842.04];
g=9.9683*x-4.3692*y-5.5776
运行程序可得