机器学习(慕课版)实验及参考结果 实验一 基于Bayes的手写字符识别.docx

机器学习(慕课版)实验及参考结果 实验一 基于Bayes的手写字符识别.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

实验一:基于Bayes的手写字符识别

姓名:

学号:

专业:人工智能

指导老师:

(打印时,下面的得分情况表留在封面)

报告分:(100points)

Attendance(5points)

Results(10points)

实验课时签到成功(5)

实验课时没有签到成功(0)

给出算法正确和可运行程序(10)

程序算法原理有部分理解错误(5)

程序算法原理和程序都有完全错误(0)

ContentofReport(55points)

formatinReport(30points)

要求点全部高质量完成(55)

要求点完成但有错误(给分点减半)

要求点没有完成(扣相应给分点的分)

图表、引用等符合学术规范(15)、语言清晰,逻辑明确和表述清晰完整(15)

图表、引用不符合学术规范(0)

语言清晰,逻辑明确和表述清晰完整(0)

最终本次实验得分成绩=报告分x(时间或算法)性能排序因子

(时间或算法)性能排序因子为:

top1-3,100%

Top4-10,95%

Top11-15,90%

Top16-最后,80%

性能可以并列第一。

(报告全文用宋体小四字体,所有的数学符号用word自带的公式编辑器进行编辑)

以下是报告的内容提纲一共7部分,共55分。

问题描述(2points)

基于MNIST数据集,采用朴素贝叶斯分类器,实现0-9数字手写体的识别。

问题的本质和分析(10points)

条件概率:指事件B发生的情况下,事件A发生的概率。

P

全概率公式:在条件概率的基础上,将原本的P(A)转化为各种条件下事件A发生概率的总和。

P

贝叶斯公式:对于条件概率P(A|B)和P(B|A)来说,PA∩B是一样的,所以将P(B|A)

P

对上式做些小改动,得到:

P

再将P(A)用全概率公式表示,即可得到贝叶斯公式的另一形态:

P

其中,P(Bi)被称为先验概率,PBiA是事件A发生的条件下事件Bi发生的概率,也被称作后验概率。如果将事件Bi视作事件A发生的原因之一(B1到Bn都是),那么上式所表达的含义就可以理解为:当事件A发生时,事件Bi是有原因的概率。这也是贝叶斯方法实现手写数字识别的基本公式,即当得到一张图片(事件

解决问题的思路,方法,思路的可行性和预期结果表现(避免截图和word打入公式)(10points)

首先确定求取概率对象。计算出所有的PBiA,然后找出最大值。那么,根据前面提到的公式可以知道,我们需要通过训练数据集计算出所有的先验概率P(Bi)和条件概率

T={

其中x1,x

都有xi={xi1,xi2,…,xin

P

P

解决问题中遇到的难点(3points)

条件概率P(X|Y)由于训练集的规模化而无法估计。假设P(X|Y)的条件概率分布是特征条件独立的话,就可以将其表示为:

P

如此,后验概率P(X|Y)的算式就可以写成:

P

再把公分母去掉,即可得到最简形式:

y=f(x)=arg

最后利用极大似然估计来估计相应的先验概率PY和条件概率

P

P

其中,I为指示函数,l代表二值化后的像素点取值情况,j表示给定的图片xi对应的第j

5.与算法对应的关键代码的实现进行文字解释和注释,

文字解释:计算先验概率和后验概率

代码如下:

defCalProb(train_data,train_label):#算条件概率和先验概率

num,dimsnum=train_data.shape#num为行数,dimsum为列数

labelnum=len(set(train_label))##标签总个数

pyj=np.zeros(labelnum)

pyjk1=np.zeros((labelnum,dimsnum))

foriinrange(num):

label=train_label[i]

pyj[label]=pyj[label]+1#计算属于j类图像的数量

forjinrange(dimsnum):

pyjk1[label][j]=pyjk1[label][j]+train_data[i][j]

print(pyj个数:,pyj)

pyjk1=(pyjk1.T+1)/(pyj+2)##条件概率

pyj=(pyj+1)/(num+labelnum)##先验概率

returnpyj,pyjk1

defCalTestProb_xk_yj(x

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档