朴素贝叶斯

朴素贝叶斯分类器的构造基础是贝叶斯理论。采用概率模型来表述,定义x=<x1,x2,...,xn>为某一n维特征向量,y∈{c1,c2,...ck}为该特征向量x所有k种可能的类别,记

P(y=ci|x)为特征向量x属于类别ci的概率。贝叶斯原理:

P(y|x)=P(x|y)P(y)/P(x)

#代码1:读取20类新闻文本的数据细节

 #从sklearn.datasets里导入新闻数据抓取器fetch_20newsgroups

from sklearn.datasets import  fetch_20newsgroups

#需要从互联网下载数据

news=fetch_20newsgroups(subset='all')

print(len(news.data))

print(news.data[0])

 
 18846

From: Mamatha Devineni Ratnam <mr47+@Andrew.cmu.edu>

Subject: Pens fans reactions

Organization: Post Office, Carnegie Mellon, Pittsburgh, PA

Lines: 12

NNTP-Posting-Host: po4.andrew.cmu.edu

I am sure some bashers of Pens fans are pretty confused about the lack

of any kind of posts about the recent Pens massacre of the Devils. Actually,

I am  bit puzzled too and a bit relieved. However, I am going to put an end

to non-PIttsburghers' relief with a bit of praise for the Pens. Man, they

are killing those Devils worse than I thought. Jagr just showed you why

he is much better than his regular season stats. He is also a lot

fo fun to watch in the playoffs. Bowman should let JAgr have a lot of

fun in the next couple of games since the Pens are going to beat the pulp out of Jersey anyway. I was very disappointed not to see the Islanders lose the final

regular season game.          PENS RULE!!!

 
可能出现的问题 fetch_20newsgroups 数据集导入失败: 1. 下载20news-bydate.tar.gz(http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz)

到C:User\Adminster\scikit_learn_data\20news_home 下

2. 修改 C:\Anaconda\Lib\site-packages\sklearn\datasets\twenty_newsgroups.py 里面的 download_20newsgroups()函数,注释掉下面的代码

 # if os.path.exists(archive_path):

#     # Download is not complete as the .tar.gz file is removed after

#     # download.

#     logger.warning("Download was incomplete, downloading again.")

#     os.remove(archive_path)

# logger.warning("Downloading dataset from %s (14 MB)", URL)

# opener = urlopen(URL)

# with open(archive_path, 'wb') as f:

#     f.write(opener.read())


并修改

archive_path = os.path.join(target_dir, r'20newsbydate.tar.gz')

3. 运行, fetch_20newsgroups会自动解压20news-bydate.tar.gz,生成缓存文件20news-bydate_py3.pkz路径为(C:User\Adminster\scikit_learn_data\20news-bydate_py3.pkz)

 
 #20类新闻文本数据分割

from sklearn.cross_validation import train_test_split

#随机采样25%的数据用于测试,剩下的75%用于构建训练集合

X_train,X_test,y_train,y_test=train_test_split(news.data,news.target,test_size=0.25,random_state=33)

#使用朴素贝叶斯分类器对新闻文本数据进行类别预测

#从sklearn.feature_extraction.text里导入用于文本特征向量转换模块

from sklearn.feature_extraction.text import CountVectorizer

vec=CountVectorizer()

X_train=vec.fit_transform(X_train)

X_test=vec.transform(X_test)

#从sklearn.naive_bayas里导入朴素贝叶斯模型

from sklearn.naive_bayes import MultinomialNB

mnb=MultinomialNB()

#利用训练数据对模型参数进行估计

mnb.fit(X_train,y_train)

#预测结果存储在变量y_predict中

y_predict=mnb.predict(X_test)

#对朴素贝叶斯分类器在新闻文本数据上的表现性能进行评估

#使用模型自带的评估函数进行准确性测评

print('The Accuracy of Naïve Bayes is',mnb.score(X_test,y_test))

#从sklearn.metrics里导入classification_report模块

from sklearn.metrics import classification_report

print(classification_report(y_test,y_predict,target_names=news.target_names))

 
 
 
 The Accuracy of Naïve Bayes is 0.8397707979626485

precision    recall  f1-score   support

alt.atheism       0.86      0.86      0.86       201

comp.graphics       0.59      0.86      0.70       250

comp.os.ms-windows.misc       0.89      0.10      0.17       248

comp.sys.ibm.pc.hardware       0.60      0.88      0.72       240

comp.sys.mac.hardware       0.93      0.78      0.85       242

comp.windows.x       0.82      0.84      0.83       263

misc.forsale       0.91      0.70      0.79       257

rec.autos       0.89      0.89      0.89       238

rec.motorcycles       0.98      0.92      0.95       276

rec.sport.baseball       0.98      0.91      0.95       251

rec.sport.hockey       0.93      0.99      0.96       233

sci.crypt       0.86      0.98      0.91       238

sci.electronics       0.85      0.88      0.86       249

sci.med       0.92      0.94      0.93       245

sci.space       0.89      0.96      0.92       221

soc.religion.christian       0.78      0.96      0.86       232

talk.politics.guns       0.88      0.96      0.92       251

talk.politics.mideast       0.90      0.98      0.94       231

talk.politics.misc       0.79      0.89      0.84       188

talk.religion.misc       0.93      0.44      0.60       158

avg / total       0.86      0.84      0.82      4712

Python机器学习(基础篇---监督学习(朴素贝叶斯))的更多相关文章

  1. 机器学习算法实践:朴素贝叶斯 (Naive Bayes)(转载)

    前言 上一篇<机器学习算法实践:决策树 (Decision Tree)>总结了决策树的实现,本文中我将一步步实现一个朴素贝叶斯分类器,并采用SMS垃圾短信语料库中的数据进行模型训练,对垃圾 ...

  2. 统计学习方法与Python实现(三)——朴素贝叶斯法

    统计学习方法与Python实现(三)——朴素贝叶斯法 iwehdio的博客园:https://www.cnblogs.com/iwehdio/ 1.定义 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设 ...

  3. 【Spark机器学习速成宝典】模型篇04朴素贝叶斯【Naive Bayes】(Python版)

    目录 朴素贝叶斯原理 朴素贝叶斯代码(Spark Python) 朴素贝叶斯原理 详见博文:http://www.cnblogs.com/itmorn/p/7905975.html 返回目录 朴素贝叶 ...

  4. 【机器学习速成宝典】模型篇05朴素贝叶斯【Naive Bayes】(Python版)

    目录 先验概率与后验概率 条件概率公式.全概率公式.贝叶斯公式 什么是朴素贝叶斯(Naive Bayes) 拉普拉斯平滑(Laplace Smoothing) 应用:遇到连续变量怎么办?(多项式分布, ...

  5. 【机器学习】文本分类——朴素贝叶斯Bayes

    朴素贝叶斯主要用于文本分类.文本分类常见三大算法:KNN.朴素贝叶斯.支持向量机SVM. 一.贝叶斯定理 贝叶斯公式思想:利用已知值来估计未知概率.已知某条件概率,如何得到两个事件交换后的概率,也就是 ...

  6. <机器学习实战>读书笔记--朴素贝叶斯

    1.朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法, 最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model, ...

  7. Andrew Ng机器学习公开课笔记 -- 朴素贝叶斯算法

    网易公开课,第5,6课 notes,http://cs229.stanford.edu/notes/cs229-notes2.pdf 前面讨论了高斯判别分析,是一种生成学习算法,其中x是连续值 这里要 ...

  8. Python机器学习笔记:朴素贝叶斯算法

    朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.对于大多数的分类算法,在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同.比如决策树,KNN,逻辑回归,支持向 ...

  9. 吴裕雄--天生自然python机器学习:朴素贝叶斯算法

    分类器有时会产生错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同 时给出这个猜测的概率估计值. 概率论是许多机器学习算法的基础 在计算 特征值取某个值的概率时涉及了一些概率知识,在那里我们先 ...

随机推荐

  1. Kotlin 接口

    Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,允许方法有默认实现: interface MyInterface { fun bar() // 未实现 fun fo ...

  2. jupyter notebook——安装配置

    本地登陆 cmd输入下面的命令,会进入用户主目录 jupyter notebook 在浏览器打开时,提示输入token,复制命令行上的token还是不能进入,其实浏览器上有提示的,按照提示操作即可,输 ...

  3. 纯css实现翻书效果

    前言 最近研究了一下css3的3D效果,写了几个demo,写篇博客总结一下实现的经过.PS:如果对transform-origin/perspective/transform-style这些概念还不了 ...

  4. node+ejs模板引擎的应用

    前言: 最近在开发一个关于后台管理系统的基础开发平台,解释一下就是不管什么管理系统都有一些相同的功能,但是又有一些细节不一样,这个基础平台就是实现对于基础功能可以进行快速开发,主要有自定义的生成功能代 ...

  5. Cocos Creator学习一:学习目录以及v2.0 必须关注的网址

    学习目录: <Cocos Creator学习二:查找节点和查找组件> <Cocos Creator学习三:生命周期回调函数> <Cocos Creator学习四:按钮响应 ...

  6. 搭建日志收集系统时使用客户端连接etcd遇到的问题

    问题: 在做日志收集系统时使用到etcd,其中server端在linux上,首先安装第三方包(windows)(安装过程可能会有问题,我遇到的是连接谷歌官网请求超时,如果已经出现下面的两个文件夹并且文 ...

  7. springboot缓存注解——@CacheEvict

    @CacheEvict:缓存清除 可以通过key指定清除的数据 如果不写默认参数的值 allEntries = true (是否删除该缓存名中所有数据,默认为false) beforeInvocati ...

  8. (详细)华为V9 DUK-AL20的usb调试模式在哪里打开的方法

    当我们使用PC通过数据线链接到安卓手机的时候,如果手机没有开启USB开发者调试模式,PC则没办法成功识别我们的手机,有时我们使用的一些功能较好的软件好比以前我们使用的一个软件引号精灵,老版本就需要打开 ...

  9. xaf 如何添加logo信息

    https://documentation.devexpress.com/eXpressAppFramework/113156/Task-Based-Help/Miscellaneous-UI-Cus ...

  10. C++标准模板库(STL)之String

    1.String的常用用法 在C语言中,使用字符数组char str[]来存字符串,字符数组操作比较麻烦,而且容易有'\0'的问题,C++在STL中加入string类型,对字符串常用的需求功能进行封装 ...