欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    朴素贝叶斯算法.docx

    • 资源ID:62380887       资源大小:47.71KB        全文页数:9页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    朴素贝叶斯算法.docx

    4 X,上机报告课程名称: 机器学习理论与实践指导教师:杨威学号20191106078姓名龚永好上机地点信-506专业电子信息工程班级电信1902班时间2022年4月1日上机内容实验一:朴素贝叶斯算法一、目的及要求目的:利用skleam中的朴素贝叶斯算法进行手写字符进行识别。 要求:1 ,导入 sklearn 包;2 .利用朴素贝叶斯算法对手写字符进行识别;3 .对真实拍摄的手写字符图像进行预处理,并进行识别;二、设备(环境)及要求1 .硬件要求:CPU在2.0 GHz以上,内存在4G以上,建议8G。2 .软件要求:Widows7系统及以上系统,Anaconda编译环境。三、内容(-)朴素贝叶斯算法对mnist数据集进行训练; 1、代码:# coding: UTF-8 import numpy as np from os import listdir from sklearn.naive_bayes import GaussianNBIf fill将32x32的二进制图像转换为1x1024向量。Parameters:filename -文件名Returns:returnVect -返回的二进制图像的1x1024向量 h ft ndef img2vector(filename):#创立1x1024零向量return Vect = np.zeros(l, 1024)C:ProgpamDataAnaconda3python.exe E:/shiyan2/pusubeiyesi.py分类返回结果为4Process finished with exit code 0四、结果分析以及出现问题本次试验,本人主要做了导入sklearn包,利用朴素贝叶斯算法对手写字符进行识别和对真实 拍摄的手写字符图像进行预处理,并进行识别等实验内容,其中,朴素贝叶斯算法对mnist数据集 进行训练的基本步骤是:(1)读取数据集(2)训练模型先验概率,p(cl), p(c2)10.1. 条件概率,p(x|cl), p(x|c2)(3)对测试集进行预测,求准确率实验结束后,本人掌握了朴素贝叶斯算法的基本原理和朴素贝叶斯算法的编程实现方法,能 利用朴素贝叶斯算法解决实际问题,收货颇丰!#翻开文件fr = open(filename)#按行读取for i in range(32):#读一行数据lineStr = fr.readline()#每一行的前32个元素依次添加到returnVect中for j in range(32):returnVect0, 32 * i + j= int(lineStrj)# 返回转换后的1x1024向量return returnVectff“ fl获取训练集 ft n iidef trainingdata():hwLabels = |# 返回trainingDigits目录下的文件名trainingFileList = listdir('trainingDigits')# 返回文件夹下文件的个数m = len(trainingFileList)# 初始化训练的Mat矩阵,测试集trainingMat = np.zeros(m, 1024)# 从文件名中解析出训练集的类别 for i in range(m):# 获得文件的名字fileNameStr = trainingFileListfi# 获得分类的数字classNumber = int(fHeNameStr.split('_')O)# 将获得的类别添加到hwLabels中hwLabels.append(classNumber)# 将每一个文件的1x1024数据存储到trainingMat矩阵中trainingMati,: = img2vector(*trainingDigits/%s' % (fileNameStr) return trainingMat, hwLabelsdef testdata():testFileList = listdir(,testDigits,)# 错误检测计数errorCount = 0.0# 测试数据的数量mTest = len(testFileList)# 从文件中解析出测试集的类别并进行分类测试for i in range(mTest):# 获得文件的名字 fileNameStr = testFileListi# 获得分类的数字classNumber = int(fileNameStr.spIit('_')O)# 获得测试集的1x1024向量,用于训练vectorUnderTest = img2vector('testDigits/%s' % (fileNameStr) return vectorUnderTestff If II手写数字分类测试f! Ifdef handwritingClassTest():#测试集的Labels hwLabels =# 返回trainingDigits目录下的文件名 trainingFileList = listdirCtrainingDigits*)# 返回文件夹下文件的个数m = len(trainingFileList)# 初始化训练的Mat矩阵,测试集 trainingMat = np.zeros(m, 1024)# 从文件名中解析出训练集的类别 for i in range(m):# 获得文件的名字fileNameStr = trainingFileListi# 获得分类的数字classNumber = int( fileNameStr. split('_)O)# 将获得的类别添加到hwLabels中 hwLabels.append(classNumber)# 将每一个文件的1x1024数据存储到trainingMat矩阵中 trainingMati,: = img2vector(,trainingDigits/%s, % (fileNameStr)elf 二 GaussianNB() # 构造 clf.fit(trainingMat, hwLabels) # 拟合#返回testDigits目录下的文件列表 testFileList = listdir('testDigits')#错误检测计数 errorCount = 0.0 #测试数据的数量 mTest = len(testFileList)#从文件中解析出测试集的类别并进行分类测试 for i in range(mTest):# 获得文件的名字fileNameStr = testFileListi# 获得分类的数字classNumber = in t(fileN ameStr. split( *_*) 0)# 获得测试集的1x1024向量,用于训练vectorUnderTest = img2vector(*testDigits/%s' % (fileNameStr)# 获得预测结果classifierResult = classifyO(vectorUnderTest, trainingMat, hwLabels, 3)classifierResult = clf.predict(vectorUnderTest)print("分类返回结果为dt 真实结果为d" % (classifierResult, classNumber)if (classifierResult != classNumber):errorCount += 1.0print("总共错了%d 个数据n 错误率为吃" % (errorCount, errorCount / mTest * 100)handwritingClassTest() 2、运用朴素贝叶斯对训练集进行识别分类返回结果为8 分类返回结果为8 分类返回结果为3 分类返回结果为8 分类返回结果为9 分类返回结果为9 分类返回结果为8 分类返回结果为8 分类返回结果为9 分类返回结果为8 分类返回结果为9 分类返回结果为8 分类返回结果为3 分类返回结果为9 分类返回结果为9 分类返回结果为9 分类返回结果为8 分类返回结果为3 分类返回结果为9 分类返回结果为8真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9真实结果为9总共错了 252个数据错误率为26.638478%Process finished with exit code 63、书写数字图片2,8孑6536 I。1> -srt(n Min mnoi ach) 文侬n miit', tq。)svv)U> 1. Col 1100K Windows (CRU文怦m AM 心 t® 式<。)BWV) WttM0000000000000000000000000000000000000000000000000000000000000000 rVWWVWWWWYWWVWWWMWVWtUI. Coll100% Windows (O文稼««(E)电式iO) (V)S1.C&1100% Windows (CRU1 io -NBC4O)吸 MLn 1. Col 1100% Windows tCS(二)利用训练好的模型对手写字符进行识别。(1)、代码:# coding: UTF-8 import numpy as np from os import listdir from sklearn.naive_bayes import GaussianNBf! If !l将32x32的二进制图像转换为1x1024向量。Parameters:filename -文件名Returns:returnVect -返回的二进制图像的1x1024向量 def img2vector(filename):# 创立1x1024零向量 return Vect = np.zeros(l, 1024)# 翻开文件 fr = open(filename)# 按行读取 for i in range(32):#读一行数据lineStr = fr.readline()#每一行的前32个元素依次添加到returnVect中 for j in range(32):returnVect0, 32 * i + j= int(lineStrj)#返回转换后的1x1024向量 return returnVectft n ii获取训练集H If !ldef trainingdata(): hwLabels =# 返回trainingDigits目录下的文件名 trainingFileList = listdir('trainingDigits')# 返回文件夹下文件的个数m = len(trainingFileList)# 初始化训练的Mat矩阵,测试集 trainingMat = np.zeros(m, 1024)# 从文件名中解析出训练集的类别 for i in range(m):# 获得文件的名字fileNameStr = trainingFileListi# 获得分类的数字classNumber = int(理 eNameStr. split('_')O)# 将获得的类别添加到hwLabels中 hwLabels.append(classNumber)# 将每一个文件的1x1024数据存储到trainingMat矩阵中 trainingMati,: = img2vector('trainingDigits/%s' % (fileNameStr) return trainingMat, hwLabelsdef testdata():testFileList = listdir('testDigits')#错误检测计数 errorCount = 0.0#测试数据的数量 mTest = len(testFileList)#从文件中解析出测试集的类别并进行分类测试 for i in range(mTest):#获得文件的名字fil eNameStr = testFileListi#获得分类的数字classNumber = int(fileNameStr.split('_')O)#获得测试集的1x1024向量用于训练vectorUnderTest = img2vector('testDigits/%s' % (fileNameStr) return vectorUnderTestf! If !手写数字分类测试»! fldef handwritingClassTest():#测试集的Labels hwLabels = | #返回trainingDigits目录下的文件名 trainingFileList = listdirCtrainingDigits*)#返回文件夹下文件的个数m = len(trainingFileList)#初始化训练的Mat矩阵,测试集 trainingMat = np.zeros(m, 1024)#从文件名中解析出训练集的类别 for i in range(m):#获得文件的名字fileNameStr = trainingFileListi#获得分类的数字classNumber = int(fileNameStr.split('_')O)#将获得的类别添加到hwLabels中 hwLabels.append(classNumber)#将每一个文件的1x1024数据存储到trainingMat矩阵中 trainingMatfi, : = img2vector(,trainingDigits/%s, % (fileNameStr)elf = GaussianNB() # 构造 clf.fit(trainingMat, hwLabels) # 拟合#返回testDigits目录下的文件列表 testFileList = listdir('testDigits')#错误检测计数 errorCount = 0.0 #测试数据的数量 mTest = len(testFileList)#从文件中解析出测试集的类别并进行分类测试 for i in range(mTest):#获得文件的名字fileNameStr = testFileListi# 获得分类的数字classNumber = int(fileNameStr.split('_')O)# 获得测试集的1x1024向量,用于训练vectorUnderTest = img2vector(,testDigits/%s' % (fileNameStr)# 获得预测结果classifierResult = classifyO(vectorUnderTest, trainingMat, hwLabels, 3)classifierResult = clf.predict(vectorUnderTest)print("分类返回结果为dt 真实结果为d” % (classifierResult, classNumber)if (classifierResult != classNumber):errorCount += 1.0print("总共错了%d 个数据n 错误率为伙" % (errorCount, errorCount / mTest * 100)ifname = 'main# handwritingClassTest()trainingMat, hwLabels = trainingdata()elf = GaussianNB() # 构造clf.fit(trainingMat, hwLabels) # 拟合fileNameStr = '10.txt'vectorUnderTest = img2vector(fileNameStr)classifierResult = clf.predict(vectorUnderTest)print("分类返回结果为d" % classifierResult)(2)、运行结果:C:PpogpamDataAnaconda3python.exe E:/shiyan2/pusubeiyesi.py分类返回结果为71、Process finished with exit code 0C:ProgramDataAnaconda3python.exe E:/shiyan2/pusubeiyesi.py分类返回结果为1Process finished with exit code 02、C:ProgramDataAnaconda3python.exe E:/shiyan2/pusubeiyesi.py分类返回结果为4Process finished with exit code 0C:ProgramDataAnaconda3python.exe E:/shiyan2/pusubeiyesi.py分类返回结果为1Process finished with exit code 0C:ProgramDataAnaconda3python.exe E:/shiyan2/pusubeiyesi.py分类返回结果为1Process finished with exit code 0C:ProgramDataAnaconda3python.exe E:/shiyan2/pusubeiyesi.py分类返回结果为4Process finished with exit code 0C:ProgramDataAnaconda3python.exe E:/shiyan2/pusubeiyesi.py分类返回结果为5Process finished with exit code 0C:ProgpamDataAnaconda3python.exe E:/shiyan2/pusubeiyesi.py分类返回结果为4Process finished with exit code 0C:ProgramDataAnaconda3python.exe E:/shiyan2/pusubeiyesi.py分类返回结果为7Process finished with exit code 0

    注意事项

    本文(朴素贝叶斯算法.docx)为本站会员(太**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开