1. 程式人生 > >樸素貝葉斯-新聞分類

樸素貝葉斯-新聞分類

樸素貝葉斯分類器的構造基礎是基於貝葉斯定理與特徵條件獨立假設的分類方法,與基於線性假設的模型(線性分類器和支援向量機分類器)不同。最為廣泛的兩種分類模型是決策樹模型(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 <[email protected]>
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條新聞,這些資料既沒有被設定特徵,也沒用數字化的度量。因此,交給樸素貝葉斯分類起學習之情,要對資料做預處理:將文字轉化為特徵向量,然後再用樸素貝葉斯模型從訓練資料中估計引數,最後利用這些概率引數對同樣轉化成特徵向量的測試樣本進行類別預測。 演算法特點: 樸素貝葉斯模型被廣發用於海量網際網路文字分類任務。由於較強的特徵條件獨立假設,使得模型預測所需要估計的引數規模從冪指數量級向線性量級減少,極大地節約了記憶體消耗和計算時間。但正是手這種強假設的限制,模型訓練時,無法將各個特徵之間的聯絡考量在內,使得該模型在其他資料特徵關聯性較強的分類任務上的效能表現不佳。

相關推薦

樸素新聞分類

樸素貝葉斯分類器的構造基礎是基於貝葉斯定理與特徵條件獨立假設的分類方法,與基於線性假設的模型(線性分類器和支援向量機分類器)不同。最為廣泛的兩種分類模型是決策樹模型(Decision Tree Model)和樸素貝葉斯模型(Naive Bayesian Model,NBM

機器學習之樸素(NB)分類演算法與Python實現

樸素貝葉斯(Naive Bayesian)是最為廣泛使用的分類方法,它以概率論為基礎,是基於貝葉斯定理和特徵條件獨立假設的分類方法。 一、 概述 1.1 簡介 樸素貝葉斯(Naive Bayesian)是基於貝葉斯定理和特徵條件獨立假

樸素分類器的Python3 實現

本篇文章是我在讀了李航的<統計學習方法>後手寫的演算法實現之一 原理請參考統計學習方法第四章樸素貝葉斯法-李航 程式碼如下: # - * - coding: utf - 8 -*- # # 作者:田豐 # 郵箱:[email pr

【機器學習西瓜書】七、樸素分類

推薦閱讀:拉普拉斯修正 7.3樸素貝葉斯分類器 關鍵詞: 樸素貝葉斯;拉普拉斯修正 上一小節我們知道貝葉斯分類器的分類依據是這公式:P(c∣x)=P(x,c)P(x)=P(c)⋅P(c∣x)P(x) ,對於每個樣本而言,分母P(x)=∑mi=1P(

4.樸素分類器實現matlab

實現樸素貝葉斯分類器,並且根據李航《統計機器學習》第四章提供的資料訓練與測試,結果與書中一致 分別實現了樸素貝葉斯以及帶有laplace平滑的樸素貝葉斯 %書中例題實現樸素貝葉斯 %特徵1的取值集合 A1=[1;2;3]; %特徵2的取值集合 A2=[4;5;6];%S M L AValue

&lt;Machine Learning in Action &gt;之二 樸素 C#實現文章分類

options 直升機 water 飛機 math mes 視頻 write mod def trainNB0(trainMatrix,trainCategory): numTrainDocs = len(trainMatrix) numWords =

基於的樸素的文本分類(附完整代碼(spark/java)

ava -s for 轉換成 模型保存 ext js rgs cti txt 本文主要包括以下內容: 1)模型訓練數據生成(demo) 2 ) 模型訓練(spark+java),數據存儲在hdfs上 3)預測數據生成(demo) 4)使用生成的模型進行文本分類。 一

樸素分類算法

貝葉斯 樸素 之前有次考試考的是手工計算樸素貝葉斯的分類。當時沒答對,後來搞明白了,不久又忘得差不多了。所以寫個例子在這兒記一下。先推導一下貝葉斯公式:假定我們觀察到兩個事件都發生了,記做P(AB),那麽我們既可以認為先發生了事件A,在此基礎上又發生了事件B,也可以認為先發生了事件B,在此基礎上又發生

利用樸素(Navie Bayes)進行垃圾郵件分類

判斷 ase create numpy water 向量 not in imp img 貝葉斯公式描寫敘述的是一組條件概率之間相互轉化的關系。 在機器學習中。貝葉斯公式能夠應用在分類問題上。這篇文章是基於自己的學習所整理。並利用一個垃圾郵件分類的樣例來加深對於理論的理解

樸素分類算法介紹及python代碼實現案例

urn bus 人的 元素 1.2 -s index 代碼 步驟 樸素貝葉斯分類算法 1、樸素貝葉斯分類算法原理 1.1、概述 貝葉斯分類算法是一大類分類算法的總稱 貝葉斯分類算法以樣本可能屬於某類的概率來作為分類依據 樸素貝葉斯分類算法是貝葉斯分類算法中最簡單的一種 註:

javascript實現樸素分類與決策樹ID3分類

.com 訓練集 this ice map ive sum length roc 今年畢業時的畢設是有關大數據及機器學習的題目。因為那個時間已經步入前端的行業自然選擇使用JavaScript來實現其中具體的算法。雖然JavaScript不是做大數據處理的最佳語言,相比還沒有

機器學習系列——樸素分類器(二)

表示 -h line log ima 條件 code 樸素貝葉斯 spa 貝葉斯定理: 其中: 表示事件B已經發生的前提下,事件A發生的概率,叫做事件B發生下事件A的條件概率。其基本求解公式為:。 機器學習系列——樸素貝葉斯分類器(二)

樸素分類器的應用 Naive Bayes classifier

upload dia get 等號 分布 eat 實現 維基 5.5 一、病人分類的例子 讓我從一個例子開始講起,你會看到貝葉斯分類器很好懂,一點都不難。 某個醫院早上收了六個門診病人,如下表。   癥狀  職業   疾病   打噴嚏 護士   感冒   打噴嚏

統計學習方法四 樸素分類

和數 com .com 條件概率 統計學習 http 模型 適用場景 es2017 樸素貝葉斯分類 1,基本概念      2,算法流程    關鍵點:理解先驗概率,條件概率,最大後驗概率,下面是以極大似然估計的          3,算法改進(貝葉斯估計)    上述用極

機器學習--樸素分類,以及拉普拉斯校準

機器學習算法 我們 earch lov 單詞 標註 樸素貝葉斯分類 images 劃分 原文鏈接:http://chant00.com/2017/09/18/%E8%B4%9D%E5%8F%B6%E6%96%AF/

基於概率論的分類方法:樸素算法實踐學習

取出 對數 pri 場景 比例 pro ngs 什麽 inf 關於本文說明,本人原博客地址位於http://blog.csdn.net/qq_37608890,本文來自筆者於2017年12月12日 13:03:46所撰寫內容(http://blog.csdn.n

機器學習知識點查漏補缺(樸素分類

平滑 http 運算 貝葉斯公式 -s 目標 bubuko 思想 指數 一、基本模型 樸素貝葉斯分類模型的基本思想就是貝葉斯公式,對以特征為條件的各類別的後驗概率。 貝葉斯公式如下: 對標樸素貝葉斯分類模型的公式如下: 分子中的第二項為每個類別的概率(實際運算即頻

機器學習之路: python 樸素分類器 預測新聞類別

groups group news ckey put epo test electron final 使用python3 學習樸素貝葉斯分類api 設計到字符串提取特征向量 歡迎來到我的git下載源代碼: https://github.com/linyi0604/kag

機器學習讀書筆記(四)樸素基礎篇之網站賬號分類

pan 技巧 nbsp 增強 就是 使用 分類問題 預測 結果 一、條件概率 在學習計算p1和p2概率之前,我們需要了解什麽是條件概率,就是指在事件B發生的情況下,事件A發生的概率,用P(A|B)來表示。 根據文氏圖,可以很清楚地看到在事件B發生的情況下,事件A發

機器學習:分類器(二)——高樸素分類器代碼實現

mod ces 數據 大於等於 即使 平均值 方差 很多 mode 一 高斯樸素貝葉斯分類器代碼實現 網上搜索不調用sklearn實現的樸素貝葉斯分類器基本很少,即使有也是結合文本分類的多項式或伯努利類型,因此自己寫了一遍能直接封裝的高斯類型NB分類器,當然與真正的源碼相