【人工智能实验】运用贝叶斯决策理论实现手写数字识别

目录

 

实验二 运用贝叶斯决策理论实现手写数字识别

一、实验目的

二、实验原理

1、分类器原理

2、实现手写数字识别算法原理

三、实验结果

四、实验总结

1、实验流程

2、分析不同模板对于实验结果的影响。

3、分析同一模板下不同阈值对于实验结果的影响。

4、分析同一模板下相同阈值下各数字识别的准确性情况。

5、分析程序中的P矩阵。

6、实验心得体会

参考代码数据集

推荐文章


实验二 运用贝叶斯决策理论实现手写数字识别

一、实验目的

熟悉和掌握贝叶斯决策理论,并利用贝叶斯决策理论的相关知识实现手写数字的识别算法,并分析主要参数变化对于识别结果的影响。

二、实验原理

1、分类器原理

贝叶斯分类是一类分类算法的总称,这类算法以贝叶斯定理为基础,故统称为贝叶斯分类算法,它是一类利用概率统计知识进行分类的算法。贝叶斯分类器是一种最优分类器,利用此分类方法得到的结果产生的误差总是最低。此方法的基础是贝叶斯公式,可以计算出该样品分属各类别的概率,也称为后验概率。

其主要思想为:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,所得到的最大值对应的类,就认为此待分类项属于这个类别。

2、实现手写数字识别算法原理

   对于给定的样本集,训练库60000张手写数字图像,测试库有10000张基于上述分类器,基于贝叶斯决策理论设计手写数字识别分类器。

 

        

图2.2.1 手写数字“0”部分样例         图2.2.1 手写数字“8”部分样例

三、实验结果

对于选取不同的阈值,以及综合考虑图像模板和算法实际效率的基础上,选用4*4模板,采取阈值(此处阈值指的是模板内像素值为非0元素的总个数)为4其最终平均正确率为75.6%。采用不同阈值下,各类样本的正确率见下表3-3.

 

表3.1 4*4模板下不同阈值识别手写数字的结果比较

   阈值

类别

3

4

5

0

86.9%

86.2%

84.0%

1

94.9%

94.6%

94.4%

2

75.0%

71.8%

68.2%

3

74.0%

76.9%

76.6%

4

71.0%

73.0%

72.3%

5

53.0%

55.7%

55.0%

6

83.1%

81.4%

79.1%

7

78.3%

79.0%

80.4%

8

62.1%

62.4%

60.8%

9

74.4%

75.6%

73.0%

平均

74.4%

75.6%

73.0%

四、实验总结

1、实验流程

首先将下载得到的minst.mat文件数据进行二值化处理,非0元素设置为1,其余像素点为0.根据流程图4.1所示,手写数字识别算法实现步骤如下:

  • 根据训练样本,由各类样本的样本数和样本总数近似计算先验概率:

  i=0,1,2,…,9,其中Ni为数字i的样品数,N为样品总数。

  • 根据训练样本,计算Pj(Wi),再计算类条件概率P(X|Wi):

   j=0,1,2,…,49,即在X属于Wi类的条件下,X的第j个分量为1的概率估计值。

  • 对于测试样本集中的每一个样本X,求出条件概率为:

  • 利用贝叶斯公式求后验概率:
  • 后验概率的最大值的类别(0~9)就是测试数据手写X的类别。

图4.1 手写数字识别流程图

2、分析不同模板对于实验结果的影响。

   下载的单个样本图片初始大小为28*28,我们可以采用大小分别为2*2、4*4、7*7的模板进行实验,实验发现当选取2*2模板识别效果虽然好,正确率可以达到82%,但是运行时间过长,选取4*4模板,合适阈值下正确率最高为75.6%,当选取7*7模板时,正确率低于50%,所以不考虑。

3、分析同一模板下不同阈值对于实验结果的影响。

   在选用4*4模板的前提下,通过选取不同的阈值,如图4.3.1所示,数字“0”降维后的图片显示,当 Threshold分别3,4,5,6,如下图4.3.1所示,我们通过对比发现当选取阈值为4时,正确率取得最大值75.6%

图4.3.1(1) 阈值为4              图4.3.1(2) 阈值为5 

图4.3.1数字“0”降维后的效果

图4.3.2 不同阈值对于实验结果的影响

 

4、分析同一模板下相同阈值下各数字识别的准确性情况。

   在选取4*4模板,阈值为4的前提下,如下图4.4所示,我们可以发现不同数字的识别正确率是不同的。数字“1”被识别的正确率最高,为94.6%,数字“5”被识别的正确率最低,仅为55.7%

图4.4 不同数字被识别的正确率情况

5、分析程序中的P矩阵。

P矩阵是根据训练集的特征向量进行求取得到的,在4*4的模板下,样本单个图片被降维为7*7,最后得到的P矩阵大小为10*49.P矩阵中记录了该样本在7*7个像素点的位置所对应的为1的概率。例如P(i,j)表示的就是对于i类样本,在第j个像素点为1的概率。P矩阵大致元素如下表4.5所示:

表4.5 P矩阵部分展示

i               j

1

10

20

30

40

0

1.69E-04

8.29E-01

2.23E-02

7.41E-01

9.55E-02

1

1.48E-04

5.09E-01

1.48E-04

2.75E-01

4.45E-03

2

1.68E-04

9.02E-01

1.68E-04

8.77E-01

3.44E-01

3

1.63E-04

9.54E-01

1.63E-04

1.81E-01

1.14E-01

4

1.71E-04

2.11E-01

3.76E-03

6.28E-01

7.15E-02

5

1.84E-04

6.43E-01

5.77E-02

2.97E-01

1.08E-01

6

1.69E-04

7.18E-01

1.35E-03

9.74E-01

3.58E-02

7

1.60E-04

3.74E-01

2.23E-03

1.01E-01

1.10E-02

8

1.71E-04

8.75E-01

3.04E-02

7.95E-01

8.10E-02

9

1.68E-04

6.51E-01

1.18E-03

4.18E-01

6.02E-02

通过P矩阵我们可以看出,在不同的列,也就是不同的像素位置,同一类样本为1的概率值是不同的,纵向对比,对于同一个位置的像素点,不同类样本的概率也是不同的,这就说明不同样本对应的特征向量的取值是不同的,这也正是我们实现本次程序的关键所在。

6、实验心得体会

    本次实验花费了很长时间,对于实验代码的编程,因为关于贝叶斯的理论知识感觉已经基本掌握,当时在和同学商量之后,决定不看老师提供的代码,独立编程。但是,在编程的过程中出现了各种各样的问题,首先就是数据集的大小没有理解清楚,盲目处理,最后努力编写出的代码运行结果正确率很低。后来请教他人后,才知道下载的数据集是按照一行一个样本存储的。另外,在编写降维以及计算概率的时候,对于一些python的矩阵运算函数自己之前根本没有了解过,嵌套了一些for循环语句,导致自己的程序运行效率很低。这也说明了自己在这方面有待提高。同时,在老师的指导下,明白了如何分析各个参数对于实验结果的影响,并注意书写的规范性。最后,顺利完成了本次实验,虽然花费了很长时间,但是付出总有回报,自己在获得知识的同时,更加磨练了自己面对难题时的意志。

参考代码数据集

下载链接:https://download.csdn.net/download/weixin_43442778/16016855

推荐文章

  • 700套个人简历模板(考研保研工作):https://mp.csdn.net/editor/html/114280230
  • 人工智能2019年秋季学期期末复习知识点整理:https://mp.csdn.net/editor/html/104431474
  • Fisher线性分类器的设计与实现,感知器算法的设计实现:https://download.csdn.net/download/weixin_43442778/16017212

欢迎大家关注【小果果学长】微信公众号,获取更多资料和源码,期待你的点赞和支持!

猜你喜欢

转载自blog.csdn.net/weixin_43442778/article/details/115053080