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

    2022年Python实现贝叶斯分类器 .pdf

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

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

    2022年Python实现贝叶斯分类器 .pdf

    关于朴素贝叶斯朴素贝叶斯算法是一个直观的方法,使用每个属性归属于某个类的概率来做预测。你可以使用这种监督性学习方法,对一个预测性建模问题进行概率建模。给定一个类, 朴素贝叶斯假设每个属性归属于此类的概率独立于其余所有属性,从而简化了概率的计算。这种强假定产生了一个快速、有效的方法。给定一个属性值, 其属于某个类的概率叫做条件概率。对于一个给定的类值,将每个属性的条件概率相乘,便得到一个数据样本属于某个类的概率。我们可以通过计算样本归属于每个类的概率,然后选择具有最高概率的类来做预测。通常, 我们使用分类数据来描述朴素贝叶斯,因为这样容易通过比率来描述、计算。一个符合我们目的、 比较有用的算法需要支持数值属性,同时假设每一个数值属性服从正态分布(分布在一个钟形曲线上),这又是一个强假设,但是依然能够给出一个健壮的结果。预测糖尿病的发生本文使用的测试问题是“皮马印第安人糖尿病问题”。这个问题包括768 个对于皮马印第安患者的医疗观测细节,记录所描述的瞬时测量取自诸如患者的年纪,怀孕和血液检查的次数。所有患者都是21 岁以上(含21 岁)的女性,所有属性都是数值型,而且属性的单位各不相同。每一个记录归属于一个类,这个类指明以测量时间为止,患者是否是在5 年之内感染的糖尿病。如果是,则为1,否则为0。机器学习文献中已经多次研究了这个标准数据集,好的预测精度为70%-76%。下面是 pima-indians.data.csv 文件中的一个样本,了解一下我们将要使用的数据。注意: 下载 文件 ,然后以 .csv 扩展名保存(如:pima-indians-diabetes.data.csv)。查看 文件中所有属性的描述。Python 1 2 3 4 5 6,148,72,35,0,33.6,0.627,50,1 1,85,66,29,0,26.6,0.351,31,0 8,183,64,0,0,23.3,0.672,32,1 1,89,66,23,94,28.1,0.167,21,0 0,137,40,35,168,43.1,2.288,33,1 朴素贝叶斯算法教程教程分为如下几步:1.处理数据: 从 CSV 文件中载入数据,然后划分为训练集和测试集。2.提取数据特征:提取训练数据集的属性特征,以便我们计算概率并做出预测。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 3.单一预测: 使用数据集的特征生成单个预测。4.多重预测: 基于给定测试数据集和一个已提取特征的训练数据集生成预测。5.评估精度: 评估对于测试数据集的预测精度作为预测正确率。6.合并代码: 使用所有代码呈现一个完整的、独立的朴素贝叶斯算法的实现。1.处理数据首先加载数据文件。CSV 格式的数据没有标题行和任何引号。我们可以使用csv模块中的open 函数打开文件,使用reader 函数读取行数据。我们也需要将以字符串类型加载进来属性转换为我们可以使用的数字。下面是用来加载匹马印第安人数据集(Pima indians dataset)的 loadCsv()函数。Python 1 2 3 4 5 6 7 import csv def loadCsv(filename): lines = csv.reader(open(filename, rb) dataset = list(lines) for i in range(len(dataset): dataseti = float(x) for x in dataseti return dataset 我们可以通过加载皮马印第安人数据集,然后打印出数据样本的个数,以此测试这个函数。Python 1 2 3 filename = pima-indians-diabetes.data.csv dataset = loadCsv(filename) print(Loaded data file 0 with 1 rows).format(filename, len(dataset) 运行测试,你会看到如下结果:Python 1 Loaded data file iris.data.csv with 150 rows 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 下一步, 我们将数据分为用于朴素贝叶斯预测的训练数据集,以及用来评估模型精度的测试数据集。我们需要将数据集随机分为包含67%的训练集合和包含33%的测试集(这是在此数据集上测试算法的通常比率)。下面是 splitDataset()函数,它以给定的划分比例将数据集进行划分。Python 1 2 3 4 5 6 7 8 9 import random def splitDataset(dataset, splitRatio): trainSize = int(len(dataset) * splitRatio) trainSet = copy = list(dataset) while len(trainSet) bestProb: bestProb = probability bestLabel = classValue return bestLabel 测试 predict()函数如下:Python 1 2 3 4 summaries = A:(1, 0.5), B:(20, 5.0) inputVector = 1.1, ? result = predict(summaries, inputVector) print(Prediction: 0).format(result) 运行测试,你会得到如下结果:Python 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 15 页 - - - - - - - - - 1 Prediction: A 多重预测最后,通过对测试数据集中每个数据样本的预测,我们可以评估模型精度。getPredictions()函数可以实现这个功能,并返回每个测试样本的预测列表。Python 1 2 3 4 5 6 def getPredictions(summaries, testSet): predictions = for i in range(len(testSet): result = predict(summaries, testSeti) predictions.append(result) return predictions 测试 getPredictions()函数如下。Python 1 2 3 4 summaries = A:(1, 0.5), B:(20, 5.0) testSet = 1.1, ?, 19.1, ? predictions = getPredictions(summaries, testSet) print(Predictions: 0).format(predictions) 运行测试,你会看到如下结果:Python 1 Predictions: A, B 计算精度名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 15 页 - - - - - - - - - 预测值和测试数据集中的类别值进行比较,可以计算得到一个介于0%100%精确率作为分类的精确度。 getAccuracy()函数可以计算出这个精确率。Python 1 2 3 4 5 6 def getAccuracy(testSet, predictions): correct = 0 for x in range(len(testSet): if testSetx-1 = predictionsx: correct += 1 return (correct/float(len(testSet) * 100.0 我们可以使用如下简单的代码来测试getAccuracy()函数。Python 1 2 3 4 testSet = 1,1,1,a, 2,2,2,a, 3,3,3,b predictions = a, a, a accuracy = getAccuracy(testSet, predictions) print(Accuracy: 0).format(accuracy) 运行测试,你会得到如下结果:Python 1 Accuracy: 66.6666666667 合并代码最后,我们需要将代码连贯起来。下面是朴素贝叶斯Python 版的逐步实现的全部代码。Python 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 15 页 - - - - - - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 # Example of Naive Bayes implemented from Scratch in Python import csv import random import math def loadCsv(filename): lines = csv.reader(open(filename, rb) dataset = list(lines) for i in range(len(dataset): dataseti = float(x) for x in dataseti return dataset def splitDataset(dataset, splitRatio): trainSize = int(len(dataset) * splitRatio) trainSet = copy = list(dataset) while len(trainSet) bestProb: bestProb = probability bestLabel = classValue return bestLabel def getPredictions(summaries, testSet): predictions = for i in range(len(testSet): result = predict(summaries, testSeti) predictions.append(result) return predictions def getAccuracy(testSet, predictions): correct = 0 for i in range(len(testSet): if testSeti-1 = predictionsi: correct += 1 return (correct/float(len(testSet) * 100.0 def main(): 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 15 页 - - - - - - - - - 89 90 91 92 93 94 95 96 97 98 99 100 101 filename = pima-indians-diabetes.data.csv splitRatio = 0.67 dataset = loadCsv(filename) trainingSet, testSet = splitDataset(dataset, splitRatio) print(Split 0 rows into train=1 and test=2 rows).format(len(dataset), len(trainingSet), len(testSet) # prepare model summaries = summarizeByClass(trainingSet) # test model predictions = getPredictions(summaries, testSet) accuracy = getAccuracy(testSet, predictions) print(Accuracy: 0%).format(accuracy) main() 运行示例,得到如下输出:Python 1 2 Split 768 rows into train=514 and test=254 rows Accuracy: 76.3779527559% 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 15 页 - - - - - - - - -

    注意事项

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

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




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

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

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

    收起
    展开