朴素贝叶斯分类器的构造基础是基于贝叶斯定理与特征条件独立假设的分类方法,与基于线性假设的模型(线性分类器和支持向量机分类器)不同。最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBM)。
朴素贝叶斯有着广泛的实际应用环境,特别是在文本分类的任务中,包括新闻的分类,垃圾邮件的筛选。

下面使用经典的20类新闻文本作为试验数据:

Python源码:

#coding=utf-8
#load news data
from sklearn.datasets import fetch_20newsgroups
#-------------
from sklearn.cross_validation import train_test_split
#-------------
from sklearn.feature_extraction.text import CountVectorizer
#-------------
from sklearn.naive_bayes import MultinomialNB
#-------------
from sklearn.metrics import classification_report#-------------download data
news=fetch_20newsgroups(subset='all')
print len(news.data)
print news.data[0]
#-------------split data
#75% training set,25% testing set
X_train,X_test,y_train,y_test=train_test_split(news.data,news.target,test_size=0.25,random_state=33)
#-------------transfer data to vector
vec=CountVectorizer()
X_train=vec.fit_transform(X_train)
#X_test=vec.fit_transform(X_test)  raise ValueError('dimension mismatch')
vectorizer_test = CountVectorizer(vocabulary=vec.vocabulary_)
X_test = vectorizer_test.transform(X_test)
#-------------training
#initialize NB model with default config
mnb=MultinomialNB()
#training model
mnb.fit(X_train,y_train)
#run on test data
y_predict=mnb.predict(X_test)
#-------------performance
print 'The Accuracy is',mnb.score(X_test,y_test)
print classification_report(y_test,y_predict,target_names=news.target_names)

Result:

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!!!

The Accuracy is 0.839770797963
                             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

该数据共有18846条新闻,这些数据既没有被设定特征,也没用数字化的度量。因此,交给朴素贝叶斯分类起学习之情,要对数据做预处理:将文本转化为特征向量,然后再用朴素贝叶斯模型从训练数据中估计参数,最后利用这些概率参数对同样转化成特征向量的测试样本进行类别预测。
算法特点:
朴素贝叶斯模型被广发用于海量互联网文本分类任务。由于较强的特征条件独立假设,使得模型预测所需要估计的参数规模从幂指数量级向线性量级减少,极大地节约了内存消耗和计算时间。但正是手这种强假设的限制,模型训练时,无法将各个特征之间的联系考量在内,使得该模型在其他数据特征关联性较强的分类任务上的性能表现不佳。

朴素贝叶斯-新闻分类相关推荐

  1. 八、朴素贝叶斯中文分类实战

    1.朴素贝叶斯中文分类实战 文本分类的流程如下图所示: 朴素贝叶斯中文分类的目录结构 中文分类的目录机构包括停用词文件.训练集文件和和测试集文件,具体内容如下图所示: 2 数据准备与处理 2.1 数据 ...

  2. 朴素贝叶斯算法-分类算法

    朴素贝叶斯算法-分类算法 1 概率基础 概率定义为一件事情发生的可能性 联合概率:包含多个条件,且所有条件同时成立的概率,记作P(A,B) 条件概率:事件A在另一个事件B已经发生条件下的发送概率,记作 ...

  3. 朴素贝叶斯实现分类_关于朴素贝叶斯分类及其实现的简短教程

    朴素贝叶斯实现分类 Naive Bayes classification is one of the most simple and popular algorithms in data mining ...

  4. r包调用legend函数_R语言实现基于朴素贝叶斯构造分类模型数据可视化

    本文内容原创,未经作者许可禁止转载! 目录 一.前言 二.摘要 三.关键词 四.算法原理 五.经典应用 六.R建模 1.载入相关包(内含彩蛋): 1.1 library包载入 1.2 pacman包载 ...

  5. 构造matlab决策树分类器,Matlab建立逻辑回归,决策树,SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线...

    ​ 尽管对于较高的阈值,SVM可以产生更好的ROC值,但逻辑回归通常更擅长区分不良雷达收益与良好雷达.朴素贝叶斯的ROC曲线通常低于其他两个ROC曲线,这表明样本内性能比其他两个分类器方法差. 比较所 ...

  6. matlab绘制贝叶斯曲线,Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线

    原文链接:http://tecdat.cn/?p=15508 绘制ROC曲线通过Logistic回归进行分类 加载样本数据.load fisheriris通过使用与versicolor和virgini ...

  7. 数据分析案例实战:贝叶斯-新闻分类

    学习唐宇迪<python数据分析与机器学习实战>视频 一.数据分析 每一条包括: theme:新闻关键内容 category:新闻种类 URL:链接 content:新闻内容 额,看着很不 ...

  8. 新闻数据分析:jieba关键词提取、LDA主题生成、贝叶斯新闻分类

    news_analysis.ipynb import pandas as pd import jieba import numpy #pip install jieba 数据源:http://www. ...

  9. 机器学习(8)朴素贝叶斯算法(20条新闻分类)

    目录 一.基础理论 二.实战:20条新闻分类 1.读取数据 2.训练集划分 3.特征工程(文本特征提取) 4.朴素贝叶斯算法训练 5.模型评估 方法一:预测值与真实值比对 方法二:计算准确率 总代码 ...

  10. 机器学习实战:朴素贝叶斯算法在新闻文本数据上的分类表现

    https://www.toutiao.com/a6647102437532369421/ 2019-01-17 08:01:00 大家好,今天跟大家学习一下通过sklearn的朴素贝叶斯模型实战.前 ...

最新文章

  1. 使用粘性布局实现tab滑动后置顶
  2. android 长按缩放拖动_十年Android之路面试2000人,面试准备+内部泄露核心题(中高级)...
  3. 终于等到你!GitHub 终于支持 multi-line comments!
  4. Kotlin 和Spring WebFlux
  5. Java布尔类toString()方法及示例
  6. 模型预测控制c语言程序_搭建第一个程序控制电路LED灯,体会C语言的魅力
  7. Stanford_NLP_TOOLS:CRFClassifier
  8. 别扯了,这才是应对高并发的正确处理思路。
  9. java 获取apk的包名_java从apk文件里获取包名、版本号
  10. 入职第一天:接口自动化测试怎么测
  11. mach内核和linux对比,海思Hi3511/Hi3512 Linux内核与标准内核差异说明
  12. 网页实现语音对讲_通过基于WebRTC的浏览器实现语音通话的方法及系统的制作方法...
  13. Python实现日程表
  14. 只用 Markdown 就写出好看的简历,在线简历应用闪亮登场!
  15. ZUCC_BB平台-Quiz
  16. libsvmpredict和svmtrain的参数和返回值
  17. 【GlobalMapper精品教程】033:影像地图羽化方式详解
  18. RPC:Completed 事件类
  19. 安卓学习专栏——从文件中读取数据、openFileInput(图文+代码)
  20. 学3D建模,需要哪些基础?

热门文章

  1. 网络广告中,CPC、CPA、CPM 的定义各是怎样的?
  2. 自用frp服务器分享及客户端配置连接教程
  3. python绘制中国_Python-Geopandas 教你绘制中国地图
  4. android客户端设计,图文详解Android客户端界面设计教程
  5. 练习27——IO流的所有用法(二)
  6. ncbi查找目的基因序列_如何用NCBI和uniprot数据库查找目的蛋白的氨基酸序列或目的基因的碱基序列...
  7. Python脚本提取氨基酸序列的 因子复杂度
  8. html中三角函数表示什么,三角函数的化一公式
  9. python 内存不足_python内存不足
  10. sql数据库去重语法_SQL如何去重?