Python实现贝叶斯分类器

Python实现贝叶斯分类器

ID:47487399

大小:71.86 KB

页数:14页

时间:2020-01-12

Python实现贝叶斯分类器_第1页
Python实现贝叶斯分类器_第2页
Python实现贝叶斯分类器_第3页
Python实现贝叶斯分类器_第4页
Python实现贝叶斯分类器_第5页
资源描述:

《Python实现贝叶斯分类器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、关于朴素贝叶斯朴素贝叶斯算法是一个直观的方法,使用每个属性归属于某个类的概率来做预测。你可以使用这种监督性学习方法,对一个预测性建模问题进行概率建模。给定一个类,朴素贝叶斯假设每个属性归属于此类的概率独立于其余所有属性,从而简化了概率的计算。这种强假定产生了一个快速、有效的方法。给定一个属性值,其属于某个类的概率叫做条件概率。对于一个给定的类值,将每个属性的条件概率相乘,便得到一个数据样本属于某个类的概率。我们可以通过计算样本归属于每个类的概率,然后选择具有最高概率的类来做预测。通常,我们使用分类数据来描述朴素贝叶斯,因为这样容易通过比率来描述、

2、计算。一个符合我们目的、比较有用的算法需要支持数值属性,同时假设每一个数值属性服从正态分布(分布在一个钟形曲线上),这又是一个强假设,但是依然能够给出一个健壮的结果。预测糖尿病的发生本文使用的测试问题是“皮马印第安人糖尿病问题”。这个问题包括768个对于皮马印第安患者的医疗观测细节,记录所描述的瞬时测量取自诸如患者的年纪,怀孕和血液检查的次数。所有患者都是21岁以上(含21岁)的女性,所有属性都是数值型,而且属性的单位各不相同。每一个记录归属于一个类,这个类指明以测量时间为止,患者是否是在5年之内感染的糖尿病。如果是,则为1,否则为0。机器学习文

3、献中已经多次研究了这个标准数据集,好的预测精度为70%-76%。下面是pima-indians.data.csv文件中的一个样本,了解一下我们将要使用的数据。注意:下载文件,然后以.csv扩展名保存(如:pima-indians-diabetes.data.csv)。查看文件中所有属性的描述。Python123456,148,72,35,0,33.6,0.627,50,11,85,66,29,0,26.6,0.351,31,08,183,64,0,0,23.3,0.672,32,11,89,66,23,94,28.1,0.167,21,00,13

4、7,40,35,168,43.1,2.288,33,1朴素贝叶斯算法教程教程分为如下几步:1.处理数据:从CSV文件中载入数据,然后划分为训练集和测试集。2.提取数据特征:提取训练数据集的属性特征,以便我们计算概率并做出预测。3.单一预测:使用数据集的特征生成单个预测。4.多重预测:基于给定测试数据集和一个已提取特征的训练数据集生成预测。5.评估精度:评估对于测试数据集的预测精度作为预测正确率。6.合并代码:使用所有代码呈现一个完整的、独立的朴素贝叶斯算法的实现。1.处理数据首先加载数据文件。CSV格式的数据没有标题行和任何引号。我们可以使用cs

5、v模块中的open函数打开文件,使用reader函数读取行数据。我们也需要将以字符串类型加载进来属性转换为我们可以使用的数字。下面是用来加载匹马印第安人数据集(Pimaindiansdataset)的loadCsv()函数。Python1234567importcsvdefloadCsv(filename):lines=csv.reader(open(filename,"rb"))dataset=list(lines)foriinrange(len(dataset)):dataset[i]=[float(x)forxindataset[i]]re

6、turndataset我们可以通过加载皮马印第安人数据集,然后打印出数据样本的个数,以此测试这个函数。Python123filename='pima-indians-diabetes.data.csv'dataset=loadCsv(filename)print('Loadeddatafile{0}with{1}rows').format(filename,len(dataset))运行测试,你会看到如下结果:Python1Loadeddatafileiris.data.csvwith150rows下一步,我们将数据分为用于朴素贝叶斯预测的训练数

7、据集,以及用来评估模型精度的测试数据集。我们需要将数据集随机分为包含67%的训练集合和包含33%的测试集(这是在此数据集上测试算法的通常比率)。下面是splitDataset()函数,它以给定的划分比例将数据集进行划分。Python123456789importrandomdefsplitDataset(dataset,splitRatio):trainSize=int(len(dataset)*splitRatio)trainSet=[]copy=list(dataset)whilelen(trainSet)

8、andom.randrange(len(copy))trainSet.append(copy.pop(index))return[tra

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。