武汉理工大学模式识别实验报告带数据带代码.docx
- 文档编号:24202397
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:37
- 大小:851.62KB
武汉理工大学模式识别实验报告带数据带代码.docx
《武汉理工大学模式识别实验报告带数据带代码.docx》由会员分享,可在线阅读,更多相关《武汉理工大学模式识别实验报告带数据带代码.docx(37页珍藏版)》请在冰豆网上搜索。
武汉理工大学模式识别实验报告带数据带代码
武汉理工大学
模式识别实验报告
姓名:
班级:
学号:
姓名:
班级:
学号:
实验一总体概率密度分布的非参数方法
一、实验目的
1.了解使用非参数方法估计样本概率密度函数的原理。
2.了解Parzen窗法的原理及其参数h1,N对估计结果的影响。
3.掌握Parzen窗法的算法并用Matlab实现。
4.使用Matlab分析Parzen窗法的参数h1,N对估计结果的影响。
二、实验数据
一维正态分布样本,使用函数randn生成。
三、实验结果
选取的h1=0.25,1,4,N=1,16,256,4096,65536,得到15个估计结果,如下列图所示。
由下面三组仿真结果可知,估计结果依赖于N和h1。
当N=1时,是一个以样本为中心的小丘。
当N=16和h1=0.25时,仍可以看到单个样本所起的作用;但当h1=1及h1=4时就受到平滑,单个样本的作用模糊了。
随着N的增加,估计量越来越好。
这说明,要想得到较精确的估计,就需要大量的样本。
但是当N取的很大,h1相对较小时,在某些区间内hN趋于零,导致估计的结果噪声大。
分析实验数据发现在h1=4,N=256时,估计结果最接近真实分布。
附录:
1.Parzen窗法函数文件parzen.m
functionparzen=parzen(N,h1,x)
%Parzen
hN=h1/sqrt(N);
num_x=numel(x);
parzen=zeros(1,num_x);
foru=1:
num_x
fori=1:
N
parzen(u)=parzen(u)+exp(((x(u)-x(i))/hN).^2/-2);
end
parzen(u)=parzen(u)/sqrt(2*pi)/h1/sqrt(N);
end
2.例程文件parzen_sample.m
x=randn(1,10000);%Normallydistributedpseudorandomnumbers
px=normpdf(x,0,1);%Normalprobabilitydensityfunction-normpdf(X,mu,sigma)
h1=[0.25,1,4];
N=[1,16,256,1024,4096];
num_h1=numel(h1);%Numberofarrayelements
num_N=numel(N);
figure('Name','总体概率密度分布的非参数方法');
%遍历h1
fori_h1=1:
length(h1)
h1_offset=(i_h1-1)*(num_N+1)+1;%绘图位置的偏移量
subplot(num_h1,num_N+1,h1_offset);
plot(x,px,'.');
ylabel(sprintf('%s%4.2f','h1=',h1(i_h1)));
title('正态分布样本的概率密度函数')
%遍历N
fori_N=1:
length(N)
pNx=parzen(N(i_N),h1(i_h1),x);
subplot(num_h1,num_N+1,h1_offset+i_N);
plot(x,pNx,'.');
title(sprintf('%s%d','N=',N(i_N)));
end
end
姓名:
班级:
学号:
实验二感知器准那么算法实验
一、实验目的
1.了解利用线性判别函数进行分类的原理。
2.了解感知器准那么算法的原理及其权向量的意义。
3.掌握感知器准那么算法并用Matlab实现。
4.使用Matlab分析感知器准那么算法生成线性判别函数的分类效果。
二、实验数据
二维坐标点数据集,w1类和w2类各10个样本。
第一组
w1=[0.1,6.8,-3.5,2.0,4.1,3.1,-0.8,0.9,5.0,3.9;
1.1,7.1,-4.1,2.7,2.8,5.0,-1.3,1.2,6.4,4.0];
w2=[7.1,-1.4,4.5,6.3,4.2,1.4,2.4,2.5,8.4,4.1;
4.2,-4.3,0.0,1.6,1.9,-3.2,-4.0,-6.1,3.7,-2.2];
第二组
w1=[0.1,6.8,-3.5,2.0,4.1,3.1,-0.8,0.9,5.0,3.9;
1.1,7.1,-4.1,2.7,2.8,5.0,-1.3,1.2,6.4,4.0];
w2=[7.1,-1.4,4.5,6.3,4.2,1.4,2.4,2.5,8.4,4.1;
4.2,-4.3,0.0,1.6,4,-3.2,-4.0,-6.1,3.7,-2.2];
三、实验结果
第一组输出结果:
权向量W=
-8.7000
9.9000
15.0000
错误个数e=
0
迭代次数K=
200
从输出的图形结果可以看到生成的权向量构造的线性判别函数能够将所有的训练样本正确分类。
第二组输出结果:
权向量W=
-30.0000
25.9000
38.0000
错误个数e=
2
迭代次数K=
1000
从输出的图形结果可以看到生成的权向量构造的线性判别函数能够尽可能将训练样本正确分类。
附录:
1.感知器准那么算法文件perceptron.m
function[W,e,K]=perceptron(w1,w2,max)
%Theperceptronalgorithm
%w1:
N1*d维输入数据clc
%w2:
N2*d维输入数据
%w:
[w0w1w2...]
%e:
错误分类数据点数
%k:
迭代次数
[N1,d]=size(w1);
N2=size(w2,1);
N=N1+N2;
X_aug=[w1,ones(N1,1);-1.*w2,-1.*ones(N2,1)];
W=ones(d+1,1);%w=[w0w1w2...]'
e=0;
K=0;
fork=1:
floor(max/N)
e=0;
fori=1:
N
K=K+1;
y=W'*X_aug(i,:
)';
ify<=0
W=W+X_aug(i,:
)';
e=e+1;
end
end
if(e==0)
return;
end
end
disp(['到达最大迭代次数'num2str(max)])
2.例程文件parzen_sample.m
w1=[0.1,6.8,-3.5,2.0,4.1,3.1,-0.8,0.9,5.0,3.9;
1.1,7.1,-4.1,2.7,2.8,5.0,-1.3,1.2,6.4,4.0];
w2=[7.1,-1.4,4.5,6.3,4.2,1.4,2.4,2.5,8.4,4.1;
4.2,-4.3,0.0,1.6,1.9,-3.2,-4.0,-6.1,3.7,-2.2];
[W,e,K]=perceptron(w1',w2',1000)
X=[w1,w2];
x=min(X(1,:
)):
0.01:
max(X(1,:
));
y=(W(1,1).*x+W(3,1))/(-W(2,1));
figure('Name','感知器准那么算法');
subplot(2,1,1);
plot(w1(1,:
),w1(2,:
),'o',w2(1,:
),w2(2,:
),'s',x,y);
title('感知器准那么算法,第一组')
w1=[0.1,6.8,-3.5,2.0,4.1,3.1,-0.8,0.9,5.0,3.9;
1.1,7.1,-4.1,2.7,2.8,5.0,-1.3,1.2,6.4,4.0];
w2=[7.1,-1.4,4.5,6.3,4.2,1.4,2.4,2.5,8.4,4.1;
4.2,-4.3,0.0,1.6,3,-3.2,-4.0,-6.1,3.7,-2.2];
[W,e,K]=perceptron(w1',w2',1000)
X=[w1,w2];
x=min(X(1,:
)):
0.01:
max(X(1,:
));
y=(W(1,1).*x+W(3,1))/(-W(2,1));
subplot(2,1,2);
plot(w1(1,:
),w1(2,:
),'o',w2(1,:
),w2(2,:
),'s',x,y);
title('感知器准那么算法,第二组')
姓名:
班级:
学号:
实验三Fisher线性判别实验
一、实验目的
1.了解Fisher线性判别算法的原理及其推导过程。
2.掌握Fisher线性判别算法并用Matlab实现。
3.使用Matlab分析Fisher线性判别算法生成的判别函数的分类效果
二、实验数据
本实验数据来自Fisher's Iris Data.xls
第一组选取萼片长度和花瓣长度作为变量,青风藤和云芝各50个样本〔见附录〕
第二组选取萼片长度和萼片宽度作为变量,青风藤和云芝各50个样本〔见附录〕三、三、实验结果
第一组输出结果:
权向量W=
0.1134
-0.3175
阈值w0=
0.2882
第二组输出结果:
权向量W=
-0.1167
0.1443
阈值w0=
0.1912
从输出的图形结果可以看到生成的权向量构造的判别函数能够尽可能将训练样本正确分类。
附录:
1.感知器准那么算法文件FisherLinearDiscriminat.m
function[W,w0]=FisherLinearDiscriminat(w1,w2)
%FLDFisherLinearDiscriminant.
%w1:
D*r1data
%w2:
D*r2data
%W:
[w0w1w2...]
%w0:
Threshold
%计算类1和类2的样本数
r1=size(w1,1);
r2=size(w2,1);
%计算类1和类2的均值〔矩阵〕
m1=mean(w1);
m2=mean(w2);
%各类类内离散度矩阵〔协方差矩阵〕
s1=cov(w1)*(r1-1);
s2=cov(w2)*(r2-1);
%总类内离散度矩阵
sw=s1+s2;
%投影向量的计算公式
W=inv(sw)*(m1-m2)';
%计算投影后的一位空间内,各类的均值
y1=W'*m1';
y2=W'*m2';
%计算阈值
w0=-1/2*(y1+y2);%和类相同符号被归为同类
2.例程文件FisherLinearDiscriminat_sample.m
w1=[xlsread('Iris','A3:
A52')';xlsread('Iris','C3:
C52')'];
w2=[xlsread('Iris','A53:
A102')';xlsread('Iris','C53:
C102')'];
[W,w0]=FisherLinearDiscriminat(w1',w2')
X=[w1,w2];
x=min(X(1,:
)):
0.01:
max(X(1,:
));
y=(W(1,1).*x+w0)/(-W(2,1));
figure('Name','Fisher线性判别');
subplot(2,1,1);
plot(w1(1,:
),w1(2,:
),'o',w2(1,:
),w2(2,:
),'s',x,y);
title('Fisher线性判别,第一组');
w1=[xlsread('Iris','A3:
A52')';xlsread('Iris','B3:
B52')'];
w2=[xlsread('Iris','A53:
A102')';xlsread('Iris','B53:
B102')'];
[W,w0]=FisherLinearDiscriminat(w1',w2')
X=[w1,w2];
x=min(X(1,:
)):
0.01:
max(X(1,:
));
y=(W(1,1).*x+w0)/(-W(2,1));
subplot(2,1,2);
plot(w1(1,:
),w1(2,:
),'o',w2(1,:
),w2(2,:
),'s',x,y);
title('Fisher线性判别,第二组');
3.实验数据Iris.xls
Fisher's Iris Data
萼片长度
萼片宽度
花瓣长度
花瓣宽度
物种编号
物种
5.1
3.5
1.4
0.2
1
青风藤
4.9
3
1.4
0.2
1
青风藤
4.7
3.2
1.3
0.2
1
青风藤
4.6
3.1
1.5
0.2
1
青风藤
5
3.6
1.4
0.2
1
青风藤
5.4
3.9
1.7
0.4
1
青风藤
4.6
3.4
1.4
0.3
1
青风藤
5
3.4
1.5
0.2
1
青风藤
4.4
2.9
1.4
0.2
1
青风藤
4.9
3.1
1.5
0.1
1
青风藤
5.4
3.7
1.5
0.2
1
青风藤
4.8
3.4
1.6
0.2
1
青风藤
4.8
3
1.4
0.1
1
青风藤
4.3
3
1.1
0.1
1
青风藤
5.8
4
1.2
0.2
1
青风藤
5.7
4.4
1.5
0.4
1
青风藤
5.4
3.9
1.3
0.4
1
青风藤
5.1
3.5
1.4
0.3
1
青风藤
5.7
3.8
1.7
0.3
1
青风藤
5.1
3.8
1.5
0.3
1
青风藤
5.4
3.4
1.7
0.2
1
青风藤
5.1
3.7
1.5
0.4
1
青风藤
4.6
3.6
1
0.2
1
青风藤
5.1
3.3
1.7
0.5
1
青风藤
4.8
3.4
1.9
0.2
1
青风藤
5
3
1.6
0.2
1
青风藤
5
3.4
1.6
0.4
1
青风藤
5.2
3.5
1.5
0.2
1
青风藤
5.2
3.4
1.4
0.2
1
青风藤
4.7
3.2
1.6
0.2
1
青风藤
4.8
3.1
1.6
0.2
1
青风藤
5.4
3.4
1.5
0.4
1
青风藤
5.2
4.1
1.5
0.1
1
青风藤
5.5
4.2
1.4
0.2
1
青风藤
4.9
3.1
1.5
0.2
1
青风藤
5
3.2
1.2
0.2
1
青风藤
5.5
3.5
1.3
0.2
1
青风藤
4.9
3.6
1.4
0.1
1
青风藤
4.4
3
1.3
0.2
1
青风藤
5.1
3.4
1.5
0.2
1
青风藤
5
3.5
1.3
0.3
1
青风藤
4.5
2.3
1.3
0.3
1
青风藤
4.4
3.2
1.3
0.2
1
青风藤
5
3.5
1.6
0.6
1
青风藤
5.1
3.8
1.9
0.4
1
青风藤
4.8
3
1.4
0.3
1
青风藤
5.1
3.8
1.6
0.2
1
青风藤
4.6
3.2
1.4
0.2
1
青风藤
5.3
3.7
1.5
0.2
1
青风藤
5
3.3
1.4
0.2
1
青风藤
7
3.2
4.7
1.4
2
云芝
6.4
3.2
4.5
1.5
2
云芝
6.9
3.1
4.9
1.5
2
云芝
5.5
2.3
4
1.3
2
云芝
6.5
2.8
4.6
1.5
2
云芝
5.7
2.8
4.5
1.3
2
云芝
6.3
3.3
4.7
1.6
2
云芝
4.9
2.4
3.3
1
2
云芝
6.6
2.9
4.6
1.3
2
云芝
5.2
2.7
3.9
1.4
2
云芝
5
2
3.5
1
2
云芝
5.9
3
4.2
1.5
2
云芝
6
2.2
4
1
2
云芝
6.1
2.9
4.7
1.4
2
云芝
5.6
2.9
3.6
1.3
2
云芝
6.7
3.1
4.4
1.4
2
云芝
5.6
3
4.5
1.5
2
云芝
5.8
2.7
4.1
1
2
云芝
6.2
2.2
4.5
1.5
2
云芝
5.6
2.5
3.9
1.1
2
云芝
5.9
3.2
4.8
1.8
2
云芝
6.1
2.8
4
1.3
2
云芝
6.3
2.5
4.9
1.5
2
云芝
6.1
2.8
4.7
1.2
2
云芝
6.4
2.9
4.3
1.3
2
云芝
6.6
3
4.4
1.4
2
云芝
6.8
2.8
4.8
1.4
2
云芝
6.7
3
5
1.7
2
云芝
6
2.9
4.5
1.5
2
云芝
5.7
2.6
3.5
1
2
云芝
5.5
2.4
3.8
1.1
2
云芝
5.5
2.4
3.7
1
2
云芝
5.8
2.7
3.9
1.2
2
云芝
6
2.7
5.1
1.6
2
云芝
5.4
3
4.5
1.5
2
云芝
6
3.4
4.5
1.6
2
云芝
6.7
3.1
4.7
1.5
2
云芝
6.3
2.3
4.4
1.3
2
云芝
5.6
3
4.1
1.3
2
云芝
5.5
2.5
4
1.3
2
云芝
5.5
2.6
4.4
1.2
2
云芝
6.1
3
4.6
1.4
2
云芝
5.8
2.6
4
1.2
2
云芝
5
2.3
3.3
1
2
云芝
5.6
2.7
4.2
1.3
2
云芝
5.7
3
4.2
1.2
2
云芝
5.7
2.9
4.2
1.3
2
云芝
6.2
2.9
4.3
1.3
2
云芝
5.1
2.5
3
1.1
2
云芝
5.7
2.8
4.1
1.3
2
云芝
姓名:
班级:
学号:
实验四BP神经网络算法实验
一、实验目的
1.了解BP神经网络算法的原理及其推导过程。
2.掌握BP神经网络算法并用Matlab实现。
3.使用Matlab分析BP神经网络算法的分类效果
二、实验数据
本实验数据来自Fisher's Iris Data.xls
所有样本〔见附录〕
三、实验结果
从输出的结果可以看到随着训练次数那么增加,错误率收敛,权值趋于稳定。
且步长调整因子越小,曲线越平滑,抖动越小。
此BP神经网络的正确率收敛于98%。
附录:
1.BP神经网络算法文件BpNeuralNetworks.m
function[Y,wi1,w12,w2o]=BpNeuralNetworks(input,output,l1,l2,h,mu,a,c)
%BpNeuralNetworks
%input:
输入样本矩阵
%output:
期望输出矩阵
%l1:
第一隐层神经元数量
%l2:
第二隐层神经元数量
%h:
输出函数形状参数h0的倒数
%mu:
步长调整因子
%a:
平滑因子
%c:
训练次数
%归一化
input=mapminmax(input,0,1);
[N,d]=size(input);%size=[150,4]
d_out=size(output,2);
%生成随机化权值
wi1=mapminmax(rand(d,l1),0.1,0.8);
w12=mapminmax(rand(l1,l2),0.1,0.8);
w2o=mapminmax(rand(l2,d_out),0.1,0.8);
wi1_p=wi1;
w12_p=w12;
w2o_p=w2o;
Y=zeros(N,d_out);
forK=1:
c
fori=1:
N
%计算输出
in=input(i,:
)';
out=output(i,:
)';
y1=1./(1+exp(-h.*(wi1'*in-0.5)));%[l1,1]
y2=1./(1+exp(-h.*(w12'*y1-0.5)));%[l2,1]
yo=1./(1+exp(-h.*(w2o'*y2-0.5)));%[d_out,1]
%修正权值
eo=yo.*(1-yo).*(out-yo);%[d_out,1]
w2o=w2o+mu.*y2*eo'+a.*(w2o-w2o_p);%[l2,d_out]
w2o_p=w2o;
e2=y2.*(1-y2).*(w2o*eo);%[l2,1]
w12=w12+mu.*y1*e2'+a.*(w12-w12_p);%[l1,l2]
w12_p=w12;
e1=y1.*(1-y1).*(w12*e2);%[l1,1]
wi1=wi1+mu.*in*e1'+a.*(wi1-wi1_p);%[d_out,l1]
wi1_p=wi1;
end
end
fori=1:
N
%计算样本分类结果
in=input(i,:
)';
y1=1./(1+exp(-h.*(wi1'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武汉理工大学 模式识别 实验 报告 数据 代码