原理分析
朴素贝叶斯算法
朴素贝叶斯方法是贝叶斯定理与特征条件独立假设相结合的分类方法。对于给定的训练数据,首先基于特征条件独立假设学习输入输出的联合概率分布;再利用贝叶斯定理算出后验概率最大的类。
朴素贝叶斯算法
![](https://i-blog.csdnimg.cn/blog_migrate/9cc65d35521b9e528b040f43da6c5d9a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6d354c8d4b028cea71b2fbca92974bd1.png)
- 拉普拉斯平滑
![](https://i-blog.csdnimg.cn/blog_migrate/dd38b7631a1559a5ab0d03b4f844d22b.png)
代码解析:
朴素贝叶斯 (1)加载数据 ①加载数据,将mnist二进制数据集加载成矩阵形式 ②将label值二值化,label>=5时为1,label<5时为0 ③将data值二值化,当data=0时为0,当data!=0时为1 ![](https://i-blog.csdnimg.cn/blog_migrate/832c333c06ea40a4ea6fefb46078d818.png) ![](https://i-blog.csdnimg.cn/blog_migrate/a03e0772d254f61b23696533a57f4dc9.png) ![](https://i-blog.csdnimg.cn/blog_migrate/a59734c47275d23b5c3bf15a5ef68831.png) ![](https://i-blog.csdnimg.cn/blog_migrate/b68f0c0b270b4a96f17b98e4b85fa62b.png)
(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] ![](https://i-blog.csdnimg.cn/blog_migrate/dc1d555b359cd8aa57e311cc75254c87.png) ②计算条件概率 通过以下代码,可以得到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 ![](https://i-blog.csdnimg.cn/blog_migrate/a6104ba7eca225785e9329224a298e46.png) ![](https://i-blog.csdnimg.cn/blog_migrate/e4ad1bbabb7243e57961933c377656c6.png) ![](https://i-blog.csdnimg.cn/blog_migrate/d82a4be6f60af56d9366735c2b6f990c.png) ③计算后验概率 通过以下代码可以得到,P(Y=1|X=x) P(Y=0|X=x) 这里的label分别输入【0,1】,计算较大值 ![](https://i-blog.csdnimg.cn/blog_migrate/1d173f0dbac592cd23675aa9403ce990.png) 比较 P(Y=1|X=x) 和P(Y=0|X=x),较大的P的Y值为该图片的label值 如果P(Y=1|X=x)较大,则label=1 否则为0; ![](https://i-blog.csdnimg.cn/blog_migrate/49c3a2a2244e95c80e510d17ff9aed74.png) ④计算正确率 比较test中的每一个图片的label值,与通过train训练得到的label值, 如果错误,则错误数量errorCount++ 除以总数得正确率
| |
|