码迷,mamicode.com
首页 > 其他好文 > 详细

bayes实现手写数字识别

时间:2020-07-22 23:29:51      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:像素   基本理论   公式   inf   样本   src   转换   实现   就是   

一。贝叶斯基本理论

技术图片

技术图片

二。看一个简单的例题,只有一个特征(长度)。

技术图片

 技术图片

技术图片

 技术图片

对于贝叶斯方法来说,首先要知道类别的先验概率,和类概率。

对于上述例题来说,p(x=10|w1)和p(x=10|w2)是已知的,但是拿到别的例子来说,这个是需要我们自己计算的。通过多个样本,计算类概率密度,其实就是训练的过程。

例题只有一个特征,而大多数情况不止有一个特征,我们则需要计算p(X|wi)X={x1,x2,x3……xn}。X是特征向量,包括N个特征。每个特征有不同的取值。

通常来说,我们需要假设特征之间是相互独立的,即朴素贝叶斯,P(X|wi)等价为P(x1|wi)*P(x2|wi)*P(x3|wi)……*P(xn|wi);

举个例子:我们现在有猫和狗两类,特征有高度(100和50两个取值)和重量(100和50两个取值)两种。训练样本有2个(用于计算类概密),还有2个测试样本。

技术图片

 

 根据所给样本得到的类概密,去计算测试样本的对应于不同类别的后验概率,得到概率最高的类别,判定为结果,计算时,因为分母相同,所以可以忽略。

 技术图片

技术图片

 

 样本1,2无法判定,样本三为狗。

 三。使用贝叶斯进行手写数字识别。

技术图片

 

 准备条件:我下载了MNIST数据集,并转化为了PNG图片,分为0-9,10个类别。每张图片28*28像素。

手动设定划分数和阈值。

比如长和宽各7划分,一个将28*28分成49个区域,每个区域看作一个特征,每个区域共有4*4=16个像素。阈值设定为0.18,意思是如果16个像素中,有超过3个像素中是有笔画的,则这块区域的特征值为1,否则为0;

和前面的例子比较,这里只是把2个特征(高度和体重),换成了49个特征。把取值100和50,换成了1和0;

通过转换,可以得到图像7*7的特征图。

在这里p(x1=1|W1),为N个样本中特征1为1的比率。p(x1=0|W1)=1-p(x1=1|W1);依次计算49个特征为1的比率,可以用一个数组来存放49个特征值为1概率。

技术图片

 分别计算10个类别的不同特征的概率,可以得到一个10x49的二维数组。

当测试一张新的图片时,先根据前面的步骤,将28*28的转换成一个7*7的特征图,然后根据贝叶斯公式。可以计算p(wi|X),求Max(p(wi|X))

因为数组中只有特征值为1的概率,特征值为0的只需要用1减去当前特征值为1的概率。

 

原图:28*28,特征图14*14,写程序时做了14划分,特征更多效果会好一点。

技术图片

 

 技术图片

技术图片

 

bayes实现手写数字识别

标签:像素   基本理论   公式   inf   样本   src   转换   实现   就是   

原文地址:https://www.cnblogs.com/sclu/p/13363415.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!