| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 朴素贝叶斯:教你用Python一步步识别手写数字 -> 正文阅读 |
|
[人工智能]朴素贝叶斯:教你用Python一步步识别手写数字 |
朴素贝叶斯朴素贝叶斯法是基于贝叶斯定理和特征条件独立假设的分类方法,由于现实中很难满足『特征条件独立假设』,这也是为什么他被叫做『朴素』贝叶斯的原因。 下面将用朴素贝叶斯发来实现手写数字的识别。 问题描述我用的数据集是
简单介绍一下这个数据集,它包含
1797
1797
1797张
8
×
8
8\times 8
8×8大小的图片,每张图片也就是
64
64
64个特征,我们可以把他标记为:
效果如下所示:
然后我们要做的就是根据输入 x x x,也就是每个像素点的值,来判断它对应的数字 y p r e d i c t y_{predict} ypredict?。 理论部分对于一个给定的输入
x
=
(
x
1
,
?
?
,
x
n
)
x=(x_1, \cdots, x_n)
x=(x1?,?,xn?),假设他的输出一共有
M
M
M种可能,我们把他记为
y
=
{
y
1
,
?
?
,
y
M
}
y=\{y_1, \cdots, y_M\}
y={y1?,?,yM?},然后我们要做的就是,在输入为
x
x
x情况下,计算输出为
y
y
y中每一个值的概率,我们把他记为
p
m
p_m
pm?, 下面要处理的就是一个寻找最大值的问题了,根据贝叶斯定理则有
P
r
(
Y
=
y
m
∣
X
=
x
)
=
P
r
(
Y
=
y
m
)
P
r
(
X
=
x
∣
Y
=
y
m
)
P
r
(
X
=
x
)
{\rm Pr}(Y = y_m | X = x) = \frac{{\rm Pr}(Y = y_m) {\rm Pr}(X=x|Y=y_m)}{{\rm Pr}(X = x)}
Pr(Y=ym?∣X=x)=Pr(X=x)Pr(Y=ym?)Pr(X=x∣Y=ym?)? 因为每个估计值
p
m
p_m
pm?求解式子分母都是
P
r
(
X
=
x
)
{\rm Pr}(X=x)
Pr(X=x),所以我们要处理的问题就变成了 其中
P
r
(
Y
=
y
m
)
{\rm Pr}(Y = y_m)
Pr(Y=ym?)很好处理,我们只需要从测试集中统计每种
y
m
y_m
ym?出现的概率,也就是先验概率。 小结我们先整理一下思路,来看看我们下面具体要做些什么。
Python实现划分数据集这里直接调用
其中 模型训练根据之前的理论,我们知道,要先用训练集来获取一些样本的均值、方差、先验概率,注意这里不需要什么梯度下降之类的优化。我们可以定义一个
模型预测获取训练集的均值、方差、先验概率后,我们就可以对测试集做出预测了
最重要的部分,便是
模型评估我们通过计算我们的模型预测的准确性来评估我们的模型,代码如下:
效果展示走完整个过程的代码如下,
我运行的输出结果为
我们也可以随机选择部分测试集查看效果,测试代码如下
完整测试代码
参考资料 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:53:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |