机器学习二 基于朴素贝叶斯模型实现对mnist数据集的分类

原理分析

朴素贝叶斯算法

    朴素贝叶斯方法是贝叶斯定理与特征条件独立假设相结合的分类方法。对于给定的训练数据,首先基于特征条件独立假设学习输入输出的联合概率分布;再利用贝叶斯定理算出后验概率最大的类。

朴素贝叶斯算法

  1. 拉普拉斯平滑

代码解析:

朴素贝叶斯

(1)加载数据

①加载数据,将mnist二进制数据集加载成矩阵形式

②将label值二值化,label>=5时为1,label<5时为0

③将data值二值化,当data=0时为0,当data!=0时为1

(2)计算概率

①计算先验概率

通过以下代码,可以得到P(Y=1),P(Y=-1)

prior_probability[label] += 1  #得到num(y=1) 和num(y=0)

prior_probability = np.array([prior_probability[i] / totalNum for i in range(2)]) 

# totalNum是图片总数(行数) 生成先验概率数组[0.50990476 0.49009524]

 

②计算条件概率

通过以下代码,可以得到P(X=x|Y=1)和P(X=x|Y=0)

conditional_probability[label][j][temp] += 1

# 经过二值化的图像只有0,1两种取值
pix_0 = conditional_probability[i][j][0]
pix_1 = conditional_probability[i][j][1]
# 计算0,1像素点对应的条件概率

#这里采用了拉普拉斯平滑,在分子处+1,分母处+2
probability_0 = ((float(pix_0)+1) / (float(pix_0 + pix_1)+2))
probability_1 = ((float(pix_1)+1 )/ (float(pix_0 + pix_1)+2))

conditional_probability[i][j][0] = probability_0
conditional_probability[i][j][1] = probability_1

 

③计算后验概率

通过以下代码可以得到,P(Y=1|X=x) P(Y=0|X=x)

这里的label分别输入【0,1】,计算较大值

 

比较 P(Y=1|X=x) 和P(Y=0|X=x),较大的P的Y值为该图片的label值

如果P(Y=1|X=x)较大,则label=1

否则为0;

 

 

 

④计算正确率

比较test中的每一个图片的label值,与通过train训练得到的label值,

如果错误,则错误数量errorCount++

除以总数得正确率

 

 
 
 
 
 
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值