人工智能实验二

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

昆明理工大学信息工程与自动化学院学生实验报告

( 2014 — 2015 学年第 1 学期)

课程名称:人工智能及其应用开课实验室:信自504 2014年12月14日

一、实验目的及内容

1.手写数字的识别

-参见week8中的资料

-任选两种方法完成识别

-可选的方法有:模板匹配、欧式举例、bayes、神经网络、决策树等

-需对模式识别的基本原理和过程、本题中涉及的数字特征的提取和表示问题做阐述二、所用仪器、材料(设备名称、型号、规格等或使用软件)

1台PC以及matlab2012软件。

三、实验方法、步骤(或:程序代码或操作过程)

实现方法为四个步骤(1)数据获取和预处理

(2)特征抽取和选择

(3)分类器设计

(4)使用分类器进行分类

数字图像被分成5行5列的格子,共5*5个特征。

X: (x1,x2,x3,…… x25)

共有9个数字,因此X有9类

特征的计算:

统计每个格子中黑色像素的个数,除以该格子中所有的像素数目,即得一个特征手写数字特征保存在templet中,由结构体pattern表示

数字‘1’的5个样本

的特征矩阵

每列代表一个样品

每行代表一个特征

手写数字图像9_1.bmp特征提取的代码如下:

该手写数字的特征向量如右所示:

1.基于二值数据的贝叶斯分类器

计算先验概率P(ωi)

计算类条件(先验)概率P(X| ωi)

P(X| ωi) = ∏P(xj=a| ωi) 其中 i=1…9, j=0…24,a=0或1, P(xj=a| ωi) = (∑xj+1)/(Ni+2)

应用Bayes公式求后验概率

P(ωi|X) = P(ωi)* P(X| ωi)

后验概率最大值的类别就是手写数字的所属类别

Testing 运行: bayesBinaryTest

function y=bayesBinary(sample);

clc;

load templet pattern;

sum=0;

prior=[];%

p=[];

likelihood=[];

P=[];

%calculate prior propability

for i=1:9

sum = sum+pattern(i).num;

end

for i=1:9

prior(i) = pattern(i).num/sum;

end

%calculate likelihood propability

for i=1:9

for j=1:25

sum=0;

for k=1:pattern(i).num

if(pattern(i).feature(j,k)>0.05) sum=sum+1;

end

end

p(j,i)=(sum+1)/(pattern(i).num+2); end

end

for i=1:9

sum=1;

for j=1:25

if(sample(j)>0.05)

sum=sum*p(j,i);

else

sum=sum*(1-p(j,i));

end

end

likelihood(i)=sum;

end

%calculate bayes propability

sum=0;

for i=1:9

sum=sum+prior(i)*likelihood(i);

end

for i=1:9

P(i)=prior(i)*likelihood(i)/sum;

end

[maxval maxpos]=max(P);

y=maxpos;

2.神经网络分类器

Implementation procedure实现步骤

初始化输入输出矩阵p[],t[]。P为训练样本,t为训练样品所属类别构件神经网络(newff函数),设置参数调整方式

Bpnet=newff(x,[50,4],{‘logsig’,’logsig’},’traingd’) 调用matlab的train(bpnet,p,t)函数,训练神经网络

对待测样品,调用sim函数,利用之前已训练好的BP网络进行识别Testing 运行bpnetTest

function y=bpnet(sample)

global bpnet;

clc;

a = sim(bpnet,sample)

a = round(a)

b = num2str(a);

c = bin2dec(b');

y = c

function bpGradientTrain

global bpnet;

clc;

load templet pattern;

c=0;

p=[];

for i=1:9

for j=1:5

c=c+1;

p(:,c)=pattern(i).feature(:,j);

end

end

t=zeros(4,45);

t(4,1:5)=1;

t(3,6:10)=1;

t(3:4,11:15)=1;

t(2,16:20)=1;

t(2,21:25)=1;

t(4,21:25)=1;

t(2:3,26:30)=1;

t(2:4,31:35)=1;

t(1,36:40)=1;

t(1,41:45)=1;

t(4,41:45)=1;

x=ones(25,2);

x(:,1)=0;

bpnet = newff(x,[50,4],{'logsig','logsig','traingd'}); bpnet.trainParam.show=50;

bpnet.trainParam.lr=0.2;

bpnet.trainParam.epochs=2000;

相关文档
最新文档