朴素贝叶斯算法.docx

上传人:太** 文档编号:62380887 上传时间:2022-11-22 格式:DOCX 页数:9 大小:47.71KB
返回 下载 相关 举报
朴素贝叶斯算法.docx_第1页
第1页 / 共9页
朴素贝叶斯算法.docx_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《朴素贝叶斯算法.docx》由会员分享,可在线阅读,更多相关《朴素贝叶斯算法.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、4 X,上机报告课程名称: 机器学习理论与实践指导教师:杨威学号20191106078姓名龚永好上机地点信-506专业电子信息工程班级电信1902班时间2022年4月1日上机内容实验一:朴素贝叶斯算法一、目的及要求目的:利用skleam中的朴素贝叶斯算法进行手写字符进行识别。 要求:1 ,导入 sklearn 包;2 .利用朴素贝叶斯算法对手写字符进行识别;3 .对真实拍摄的手写字符图像进行预处理,并进行识别;二、设备(环境)及要求1 .硬件要求:CPU在2.0 GHz以上,内存在4G以上,建议8G。2 .软件要求:Widows7系统及以上系统,Anaconda编译环境。三、内容(-)朴素贝叶

2、斯算法对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:ProgpamD

3、ataAnaconda3python.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)对测试集进行预测,求准确率实验结束后,本人掌握了朴素贝叶斯算法的基本原

4、理和朴素贝叶斯算法的编程实现方法,能 利用朴素贝叶斯算法解决实际问题,收货颇丰!#翻开文件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 = |# 返回trainingDigi

5、ts目录下的文件名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(cla

6、ssNumber)# 将每一个文件的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

7、eNameStr = testFileListi# 获得分类的数字classNumber = int(fileNameStr.spIit(_)O)# 获得测试集的1x1024向量,用于训练vectorUnderTest = img2vector(testDigits/%s % (fileNameStr) return vectorUnderTestff If II手写数字分类测试f! Ifdef handwritingClassTest():#测试集的Labels hwLabels =# 返回trainingDigits目录下的文件名 trainingFileList = listdirCtr

8、ainingDigits*)# 返回文件夹下文件的个数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数据存储到trai

9、ningMat矩阵中 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):# 获得文件的名

10、字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(分类返回

11、结果为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 分类返回结果

12、为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 ac

13、h) 文侬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

14、-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(3

15、2):#读一行数据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(trainingFile

16、List)# 初始化训练的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(trainingDi

17、gits/%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

18、向量用于训练vectorUnderTest = img2vector(testDigits/%s % (fileNameStr) return vectorUnderTestf! If !手写数字分类测试! fldef handwritingClassTest():#测试集的Labels hwLabels = | #返回trainingDigits目录下的文件名 trainingFileList = listdirCtrainingDigits*)#返回文件夹下文件的个数m = len(trainingFileList)#初始化训练的Mat矩阵,测试集 trainingMat = np.zer

19、os(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() #

20、构造 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向量,用于

21、训练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.0pr

22、int(总共错了%d 个数据n 错误率为伙 % (errorCount, errorCount / mTest * 100)ifname = main# handwritingClassTest()trainingMat, hwLabels = trainingdata()elf = GaussianNB() # 构造clf.fit(trainingMat, hwLabels) # 拟合fileNameStr = 10.txtvectorUnderTest = img2vector(fileNameStr)classifierResult = clf.predict(vectorUnderTe

23、st)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/pusubeiy

24、esi.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

25、.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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

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

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