机器学习之路: python 朴素贝叶斯分类器 预测新闻类别

使用python3 学习朴素贝叶斯分类api

设计到字符串提取特征向量

欢迎来到我的git下载源代码: https://github.com/linyi0604/kaggle

 1 from sklearn.datasets import fetch_20newsgroups
 2 from sklearn.cross_validation import train_test_split
 3 # 导入文本特征向量转化模块
 4 from sklearn.feature_extraction.text import CountVectorizer
 5 # 导入朴素贝叶斯模型
 6 from sklearn.naive_bayes import MultinomialNB
 7 # 模型评估模块
 8 from sklearn.metrics import classification_report
 9
10 ‘‘‘
11 朴素贝叶斯模型广泛用于海量互联网文本分类任务。
12 由于假设特征条件相互独立,预测需要估计的参数规模从幂指数量级下降接近线性量级,节约内存和计算时间
13 但是 该模型无法将特征之间的联系考虑,数据关联较强的分类任务表现不好。
14 ‘‘‘
15
16 ‘‘‘
17 1 读取数据部分
18 ‘‘‘
19 # 该api会即使联网下载数据
20 news = fetch_20newsgroups(subset="all")
21 # 检查数据规模和细节
22 # print(len(news.data))
23 # print(news.data[0])
24 ‘‘‘
25 18846
26
27 From: Mamatha Devineni Ratnam <[email protected]>
28 Subject: Pens fans reactions
29 Organization: Post Office, Carnegie Mellon, Pittsburgh, PA
30 Lines: 12
31 NNTP-Posting-Host: po4.andrew.cmu.edu
32
33 I am sure some bashers of Pens fans are pretty confused about the lack
34 of any kind of posts about the recent Pens massacre of the Devils. Actually,
35 I am  bit puzzled too and a bit relieved. However, I am going to put an end
36 to non-PIttsburghers‘ relief with a bit of praise for the Pens. Man, they
37 are killing those Devils worse than I thought. Jagr just showed you why
38 he is much better than his regular season stats. He is also a lot
39 fo fun to watch in the playoffs. Bowman should let JAgr have a lot of
40 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
41 regular season game.          PENS RULE!!!
42 ‘‘‘
43
44 ‘‘‘
45 2 分割数据部分
46 ‘‘‘
47 x_train, x_test, y_train, y_test = train_test_split(news.data,
48                                                     news.target,
49                                                     test_size=0.25,
50                                                     random_state=33)
51
52 ‘‘‘
53 3 贝叶斯分类器对新闻进行预测
54 ‘‘‘
55 # 进行文本转化为特征
56 vec = CountVectorizer()
57 x_train = vec.fit_transform(x_train)
58 x_test = vec.transform(x_test)
59 # 初始化朴素贝叶斯模型
60 mnb = MultinomialNB()
61 # 训练集合上进行训练, 估计参数
62 mnb.fit(x_train, y_train)
63 # 对测试集合进行预测 保存预测结果
64 y_predict = mnb.predict(x_test)
65
66 ‘‘‘
67 4 模型评估
68 ‘‘‘
69 print("准确率:", mnb.score(x_test, y_test))
70 print("其他指标:\n",classification_report(y_test, y_predict, target_names=news.target_names))
71 ‘‘‘
72 准确率: 0.8397707979626485
73 其他指标:
74                            precision    recall  f1-score   support
75
76              alt.atheism       0.86      0.86      0.86       201
77            comp.graphics       0.59      0.86      0.70       250
78  comp.os.ms-windows.misc       0.89      0.10      0.17       248
79 comp.sys.ibm.pc.hardware       0.60      0.88      0.72       240
80    comp.sys.mac.hardware       0.93      0.78      0.85       242
81           comp.windows.x       0.82      0.84      0.83       263
82             misc.forsale       0.91      0.70      0.79       257
83                rec.autos       0.89      0.89      0.89       238
84          rec.motorcycles       0.98      0.92      0.95       276
85       rec.sport.baseball       0.98      0.91      0.95       251
86         rec.sport.hockey       0.93      0.99      0.96       233
87                sci.crypt       0.86      0.98      0.91       238
88          sci.electronics       0.85      0.88      0.86       249
89                  sci.med       0.92      0.94      0.93       245
90                sci.space       0.89      0.96      0.92       221
91   soc.religion.christian       0.78      0.96      0.86       232
92       talk.politics.guns       0.88      0.96      0.92       251
93    talk.politics.mideast       0.90      0.98      0.94       231
94       talk.politics.misc       0.79      0.89      0.84       188
95       talk.religion.misc       0.93      0.44      0.60       158
96
97              avg / total       0.86      0.84      0.82      4712
98 ‘‘‘

原文地址:https://www.cnblogs.com/Lin-Yi/p/8970522.html

时间: 2024-08-08 18:47:14

机器学习之路: python 朴素贝叶斯分类器 预测新闻类别的相关文章

机器学习之路: python 回归树 DecisionTreeRegressor 预测波士顿房价

python3 学习api的使用 git: https://github.com/linyi0604/MachineLearning 代码: 1 from sklearn.datasets import load_boston 2 from sklearn.cross_validation import train_test_split 3 from sklearn.preprocessing import StandardScaler 4 from sklearn.tree import De

【机器学习算法-python实现】扫黄神器-朴素贝叶斯分类器的实现

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 以前我在外面公司实习的时候,一个大神跟我说过,学计算机就是要一个一个贝叶斯公式的套用来套用去.嗯,现在终于用到了.朴素贝叶斯分类器据说是好多扫黄软件使用的算法,贝叶斯公式也比较简单,大学做概率题经常会用到.核心思想就是找出特征值对结果影响概率最大的项.公式如下: 什么是朴素贝叶斯,就是特征值相互独立互不影响的情况.贝叶斯可以有很多变形,这里先搞一个简单的,以后遇到复杂的再写. 2.数据集 摘自机器学

朴素贝叶斯分类器及Python实现

贝叶斯定理 贝叶斯定理是通过对观测值概率分布的主观判断(即先验概率)进行修正的定理,在概率论中具有重要地位. 先验概率分布(边缘概率)是指基于主观判断而非样本分布的概率分布,后验概率(条件概率)是根据样本分布和未知参数的先验概率分布求得的条件概率分布. 贝叶斯公式: P(A∩B) = P(A)*P(B|A) = P(B)*P(A|B) 变形得: P(A|B)=P(B|A)*P(A)/P(B) 其中 P(A)是A的先验概率或边缘概率,称作"先验"是因为它不考虑B因素. P(A|B)是已知

机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)

朴素贝叶斯分类器是一组简单快速的分类算法.网上已经有很多文章介绍,比如这篇写得比较好:https://blog.csdn.net/sinat_36246371/article/details/60140664.在这里,我按自己的理解再整理一遍. 在机器学习中,我们有时需要解决分类问题.也就是说,给定一个样本的特征值(feature1,feature2,...feauren),我们想知道该样本属于哪个分类标签(label1,label2,...labeln).即:我们想要知道该样本各个标签的条件概

机器学习:贝叶斯分类器(二)——高斯朴素贝叶斯分类器代码实现

一 高斯朴素贝叶斯分类器代码实现 网上搜索不调用sklearn实现的朴素贝叶斯分类器基本很少,即使有也是结合文本分类的多项式或伯努利类型,因此自己写了一遍能直接封装的高斯类型NB分类器,当然与真正的源码相比少了很多属性和方法,有兴趣的可以自己添加.代码如下(有详细注释): class NaiveBayes(): '''高斯朴素贝叶斯分类器''' def __init__(self): self._X_train = None self._y_train = None self._classes

从朴素贝叶斯分类器到贝叶斯网络(上)

一.贝叶斯公式(一些必备的数学基础) 贝叶斯(Thomas Bayes)是生活在十八世纪的一名英国牧师和数学家.因为历史久远,加之他没有太多的著述留存,今天的人们对贝叶斯的研究所知甚少.唯一知道的是,他提出了概率论中的贝叶斯公式.但从他曾经当选英国皇家科学学会会员(类似于院士)来看,他的研究工作在当时的英国学术界已然受到了普遍的认可. 事实上,在很长一段时间里,人们都没有注意到贝叶斯公式所潜藏的巨大价值.直到二十世纪人工智能.机器学习等崭新学术领域的出现,人们才从一堆早已蒙灰的数学公式中发现了贝

从朴素贝叶斯分类器到贝叶斯网络(下)

书接上文 :从朴素贝叶斯分类器到贝叶斯网络(上) 三.贝叶斯网络 贝叶斯网络(Bayesian Network)是一种用于表示变量间依赖关系的数据结构.有时它又被称为信念网络(Belief Network)或概率网络(Probability Network).在统计学习领域.概率图模型(PGM,Probabilistic Graphical Models)经常使用来指代包括贝叶斯网络在内的更加宽泛的一类机器学习模型.比如隐马尔可夫模型(HMM,Hidden Markov Model)也是一种PG

基于朴素贝叶斯分类器的文本分类算法

源代码下载:NaviveBayesClassify.rar Preface 文本的分类和聚类是一个比较有意思的话题,我以前也写过一篇blog<基于K-Means的文本聚类算法>,加上最近读了几本数据挖掘和机器学习的书籍,因此很想写点东西来记录下学习的所得. 在本文的上半部分<基于朴素贝叶斯分类器的文本分类算法(上)>一文中简单介绍了贝叶斯学习的基本理论,这一篇将展示如何将该理论运用到中文文本分类中来,具体的文本分类原理就不再介绍了,在上半部分有,也可以参见代码的注释. 文本特征向量

PGM学习之三 朴素贝叶斯分类器(Naive Bayes Classifier)

介绍朴素贝叶斯分类器的文章已经很多了.本文的目的是通过基本概念和微小实例的复述,巩固对于朴素贝叶斯分类器的理解. 一 朴素贝叶斯分类器基础回顾 朴素贝叶斯分类器基于贝叶斯定义,特别适用于输入数据维数较高的情况.虽然朴素贝叶斯分类器很简单,但是它确经常比一些复杂的方法表现还好. 为了简单阐述贝叶斯分类的基本原理,我们使用上图所示的例子来说明.作为先验,我们知道一个球要么是红球要么是绿球.我们的任务是当有新的输入(New Cases)时,我们给出新输入的物体的类别(红或者绿).这是贝叶斯分类器的典型