感知器训练算法。
在设计贝叶斯分类器时需要设法获取样本统计分布的资料,应知道先验概率及类分布概率密度函数等。然而,在样本数不充足条件下要获取准确的统计分布是很困难的。这样,可以考虑另外一种分类器设计方法,即根据训练样本集提供的信息,直接进行分类器设计。
下面实验是针对线性可分情况下的感知器算法。
实验所用样本数据表中已给出(其中每个样本空间(数据)为两维,x 1表示第一维的值、x 2表示第二维的值),编制程序实现ω1、ω 2类ω 2、ω 3类的分类。分析分类器算法的性能。
感知器算法实验数据。
感知器训练算法的思路:
设训练样本集x=,其中每个样本xk,k=1,2,…,n分别属于类型wi或类型wj,且xi类别属性已知。为了确定加权向量a*,则进行下面的训练算法:
1) 给定初始值:置k=0,赋权向量为任意值,可选常数c>0.
2) 输出训练样本xk=,计算判别函数值g(xk);
3) 按如下规则修正权向量a(k);
若xk属于wi且g(xk)<=0,则a(k+1)=a(k)+cxk;
若xk属于wj且g(xk)>0,则a(k+1)=a(k)-cxk;
4) 令k=k+1,返回(2),直到a对所有训练样本均稳定不变,则结束。
实现程序的思路:
第一步,给出三组样本数据,w1,w2,w3,用矩阵形式表示出来ww1,ww2,ww3;
第二步,w12=[ww1,-ww2],初始化k值,y向量。
第三步,开始迭代,计算判别函数值y,根据y值来决定是否改变权向量a;
第四步,计算迭代的步数,输出结果。
clearoriginal data
w1=[0.1 3.1 -0.
8 0.9 5.0 3.
9 .1 6.8 -3.
5 2.0 4.1 4.
0;4.0 5.0 -1.
3 1.2 6.4 4.
0 1.1 7.1 -4.
1 2.7 2.8 5.
0];w2=[3.1 7.1 -1.
4 4.5 6.3 4.
2 1.4 2.4 2.
5 8.4 4.1 5.
0;-2.0 4.2 -4.
3 0.0 1.6 1.
9 -3.2 -4.0 -6.
1 3.7 -2.2 -1];
w3=[-6.0 -3.0 0.
5 2.9 -0.1 -0.
4 -1.3 -3.4 1 -5.
1 1.9 2;5 -2.9 8.
7 2.1 5.2 2.
2 3.7 6.2 3.
4 1.6 5.1 2];
normalized
ww1=[ones(1,size(w1,2));w1];
ww2=[ones(1,size(w2,2));w2];
ww3=[ones(1,size(w3,2));w3];
w12=[ww1,-ww2];
y=zeros(1,size(w12,2y为1行12列的全0矩阵。
a=[1;1;1初始值a=[1 1 1];
k=0k=0;
while any(y<=0开始迭代并检测y值是否大于0
for i=1:size(y,2)
y(i)=a'*w12(:,i);
enda=a+(sum((w12(:,find(y<=0若y<0,则改变a的值。
k=k+1k标记迭代的步数。enda
kfigure(1)
plot(w1(1,:)w1(2,:)r用大红点表示属于w1类的点。
hold on保持绘制的点不被清除。
plot(w2(1,:)w2(2用*表示属于w2类的点。
xmin=min(min(w1(1,:)min(w2(1,:)
xmax=max(max(w1(1,:)max(w2(1,:)
ymin=min(min(w1(2,:)min(w2(2,:)
ymax=max(max(w1(2,:)max(w2(2,:)
xindex=xmin-1:(xmax-xmin)/100:xmax+1;
yindex=-a(2)*xindex/a(3)-a(1)/a(3);
plot(xindex,yindex画出w1与w2类之间的决策面。
w12=[ww2,-ww3w2与w3类的决策面的确定,%与上面类似。
y=zeros(1,size(w12,2));
a=[1;1;1];
k=0;while any(y<=0)
for i=1:size(y,2)
y(i)=a'*w12(:,i);
enda=a+(sum((w12(:,find(y<=0)))
k=k+1;enda
kfigure(2)
plot(w2(1,:)w2(2,:)r.')
hold on
plot(w3(1,:)w3(2,:)
xmin=min(min(w2(1,:)min(w3(1,:)
xmax=max(max(w2(1,:)max(w3(1,:)
xindex=xmin-1:(xmax-xmin)/100:xmax+1;
yindex=-a(2)*xindex/a(3)-a(1)/a(3);
plot(xindex,yindex)
分类结果如下图:
实验结果表明,w1与w2类收敛的步数为35,w2与w3类收敛的步数为17。
总结:感知器训练算法是针对线性可分的,对于不可分的一组数据,用感知器算法得不出。
结果来。
模式识别作业
6.题目 fisher分类和基于核的fisher分类的设计与实现研究。具体内容 1.简述fisher分类和基于核的fisher分类的算法原理 2.举出实例 3.用matlab软件编写程序实现 4.分析实验结果。fisher分类和基于核的fisher分类的设计与实现研究。1 fisher分类和基于核的...
模式识别作业
模式识别课程matlab程序作业。模式识别贝叶斯决策 正常状态细胞p 1 0.9,异常状态细胞p 2 0.1,类条件概率密度分别为p x 1 n 0,1 p x 2 n 0.2,1.5 现有一待识别细胞,其观察值为0.2,用matlab写出程序对该细胞进行分类。编写程序如下 close all cl...
模式识别作业
题目 lsme分类算法原理及实现步骤。学院 通信学院 专业 自动化 学号 52110822 姓名 郑智鹏。lsme算法的基本原理。lmse算法是对准则函数引进最小均方误差这一条件而建立起来的,这种算法的主要特点是在训练过程中判定训练集是否线性可分,从而对结果的收敛性做出判断。此方法也称为ho kas...