武汉理工大学模式识别实验报告带数据带代码.docx

上传人:b****4 文档编号:5546404 上传时间:2023-05-08 格式:DOCX 页数:37 大小:851.72KB
下载 相关 举报
武汉理工大学模式识别实验报告带数据带代码.docx_第1页
第1页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第2页
第2页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第3页
第3页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第4页
第4页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第5页
第5页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第6页
第6页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第7页
第7页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第8页
第8页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第9页
第9页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第10页
第10页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第11页
第11页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第12页
第12页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第13页
第13页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第14页
第14页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第15页
第15页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第16页
第16页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第17页
第17页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第18页
第18页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第19页
第19页 / 共37页
武汉理工大学模式识别实验报告带数据带代码.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

武汉理工大学模式识别实验报告带数据带代码.docx

《武汉理工大学模式识别实验报告带数据带代码.docx》由会员分享,可在线阅读,更多相关《武汉理工大学模式识别实验报告带数据带代码.docx(37页珍藏版)》请在冰点文库上搜索。

武汉理工大学模式识别实验报告带数据带代码.docx

武汉理工大学模式识别实验报告带数据带代码

武汉理工大学

模式识别实验报告

 

姓名:

班级:

学号:

姓名:

班级:

学号:

实验一总体概率密度分布的非参数方法

一、实验目的

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.xlshttps:

//en.wikipedia.org/wiki/Iris_flower_data_set

第一组选取萼片长度和花瓣长度作为变量,青风藤和云芝各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

https:

//en.wikipedia.org/wiki/Iris_flower_data_set所有样本(见附录)

三、实验结果

从输出的结果可以看到随着训练次数则增加,错误率收敛,权值趋于稳定。

且步长调整因子越小,曲线越平滑,抖动越小。

此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=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2