1. 程式人生 > >機器學習入門實戰——樸素貝葉斯實戰新聞組資料集

機器學習入門實戰——樸素貝葉斯實戰新聞組資料集

樸素貝葉斯實戰新聞組資料集

關於樸素貝葉斯的相關理論知識可檢視:樸素貝葉斯法

關於新聞組資料集

20newsgroups資料集是用於文字分類、文字挖據和資訊檢索研究的國際標準資料集之一。一些新聞組的主題特別相似(e.g. comp.sys.ibm.pc.hardware/comp.sys.mac.hardware),還有一些卻完全不相關 (e.g misc.forsale /soc.religion.christian)。

20個新聞組資料集包含大約18000個新聞組,其中20個主題分成兩個子集:一個用於訓練(或開發),另一個用於測試(或用於效能評估)。訓練集和測試集之間的分割是基於特定日期之前和之後釋出的訊息。

程式碼實戰

首先,還是匯入資料集

from sklearn.datasets import fetch_20newsgroups

news = fetch_20newsgroups(subset='all')
print(len(news.data))
print(news.data[0])

我們這裡打印出來一個新聞例子,如下

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

接下來,劃分資料集,還是75%訓練集,25%測試集

from sklearn.cross_validation import train_test_split
X_train,X_test,Y_train,Y_test = train_test_split(news.data,news.target,test_size=0.25,random_state=33)

我們需要對文字特徵進行提取,我們這裡使用CountVectorizer來提取特徵。CountVectorizer能夠將文字詞塊化,通過計算詞彙的數量來將文字轉化成向量(更多文字特徵提取內容可檢視https://www.cnblogs.com/Haichao-Zhang/p/5220974.html)。然後我們匯入模型來學習資料。

from sklearn.feature_extraction.text import CountVectorizer
vec = CountVectorizer()
X_train = vec.fit_transform(X_train)
X_test = vec.transform(X_test)

from sklearn.naive_bayes import MultinomialNB
mnb = MultinomialNB()
mnb.fit(X_train,Y_train)
y_predict = mnb.predict(X_test)

最後,我們還是一樣,檢驗一下模型的準確度

from sklearn.metrics import classification_report
print('The Accuracy of Navie Bayes Classifier is',mnb.score(X_test,Y_test))
print(classification_report(Y_test,y_predict,target_names = news.target_names))

這裡寫圖片描述
程式碼參考:《Python機器學習及實踐:從零開始通往Kaggle競賽之路》

相關推薦

機器學習入門樸素

樸素貝葉斯法 樸素貝葉斯法是基於貝葉斯定理和特徵條件獨立假設分類方法。對於給定訓練集,首先基於特徵條件獨立性的假設,學習輸入/輸出聯合概率(計算出先驗概率和條件概率,然後求出聯合概率)。然後基於此模型,給定輸入x,利用貝葉斯概率定理求出最大的後驗概率作為輸出y

機器學習入門實戰——樸素實戰新聞組資料

樸素貝葉斯實戰新聞組資料集 關於樸素貝葉斯的相關理論知識可檢視:樸素貝葉斯法 關於新聞組資料集 20newsgroups資料集是用於文字分類、文字挖據和資訊檢索研究的國際標準資料集之一。一些新聞組的主題特別相似(e.g. comp.sys.ibm.pc.h

機器學習筆記5——樸素演算法

在上一講中,我們瞭解到了樸素貝葉斯以及laplace平滑。這一小節中,我們將要改進樸素貝葉斯演算法。原有的樸素貝葉斯中的特徵值xi是隻取0和1兩個值,現在要對樸素貝葉斯進行一般化,以適應於特徵值取值範圍為{1,2,...,k}這種情況。 一般化過程中,對p(x

機器學習演算法之樸素(Naive Bayes)--第二篇

引言 這篇文章主要介紹將樸素貝葉斯模型應用到文字分類任務的技巧和方法。 詞袋模型(The Bag of Words Model) 對於機器學習演算法來說,特徵的選擇是一個很重要的過程。那麼如何從文字訓練集中選出好的特徵呢?在自然語言處理中,一個常見

機器學習 】使用樸素進行文件分類

樸素貝葉斯的一般過程: 1、收集資料:任何方法 2、準備資料:需要數值型或者布林型資料 3、分析資料:有大量特徵時,繪製特徵作用不大,此時使用直方圖效果更好 4、訓練演算法:計算不同的獨立特徵的條件概率 5、測試演算法:計算錯誤率 6、使用演算法:常見的樸素貝葉斯應用是

【十九】機器學習之路——樸素分類

  最近在看周志華《機器學習》的貝葉斯分類器這一章時覺得書上講的很難理解,很多專業術語和符號搞的我頭大,大學時候概率論我還是學的還是不錯的,無奈網上搜了搜前輩的部落格,看到一篇把樸素貝葉斯講的很簡單的文章,頓時豁然開朗。關於貝葉斯分類且聽我慢慢道來: 貝葉

機器學習演算法之樸素(Naive Bayes)--第一篇

引言 先前曾經看了一篇文章,一個老外程式設計師寫了一些很牛的Shell指令碼,包括晚下班自動給老婆發簡訊啊,自動衝Coffee啊,自動掃描一個DBA發來的郵件啊, 等等。於是我也想用自己所學來做一點有趣的事情。我的想法如下: 首先我寫個scrapy指令碼來

機器學習:半樸素分類器

請點選上面公眾號,免費訂閱。 主要推送關於對演算法的思考以及應用的訊息。培養思維能力,注重過程,挖掘背後的原理,刨根問底。本著嚴謹和準確的態度,目標是撰寫實用和啟發性的文章,歡迎您的關注。 0

python機器學習庫sklearn——樸素分類器

在scikit-learn中,一共有3個樸素貝葉斯的分類演算法類。分別是GaussianNB,MultinomialNB和BernoulliNB。其中GaussianNB就是先驗為高斯分佈的樸素貝葉斯,MultinomialNB就是先驗為多項式分佈的樸素

機器學習演算法總結--樸素

這次需要總結的是樸素貝葉斯演算法,參考文章: 簡介 樸素貝葉斯是基於貝葉斯定理與特徵條件獨立假設的分類方法。 貝葉斯定理是基於條件概率來計算的,條件概率是在已知事件B發生的前提下,求解事件A發生的概率,即P(A|B)=P(AB)P(B),而貝葉

機器學習系列之樸素演算法(監督學習-分類問題)

''' @description :一級分類:監督學習,二級分類:分類(離散問題),三級分類:貝葉斯演算法 演算法優點: a 樸素貝葉斯模型發源於古典數學理論,有穩定的分類效率 b 對缺失的資料不太敏感,演算法也比較簡

機器學習演算法之樸素

樸素貝葉斯法是基於貝葉斯定理與特徵條件獨立假設的分類方法。演算法的核心思想就是比較概率的大小,認定概率大的類別為所屬類別下面是公式推導下面是樸素貝葉斯的python程式碼實現import numpy as np from functools import reduce de

Python機器學習筆記:樸素演算法

  樸素貝葉斯是經典的機器學習演算法之一,也是為數不多的基於概率論的分類演算法。對於大多數的分類演算法,在所有的機器學習分類演算法中,樸素貝葉斯和其他絕大多數的分類演算法都不同。比如決策樹,KNN,邏輯迴歸,支援向量機等,他們都是判別方法,也就是直接學習出特徵輸出Y和特徵X之間的關係,要麼是決策函式,要麼是條

樸素對wine資料分類

該實驗的資料集是MostPopular Data Sets(hits since 2007)中的wine資料集,這是是對在義大利同一地區生產的三種不同品種的酒,做大量分析所得出的資料。這些資料包括了三種酒中13種不同成分的數量。 經過幾天對資料集以及分類演算法的研究,詳細研

樸素對鳶尾花資料進行分類

注:本人純粹為了練手熟悉各個方法的用法 使用高斯樸素貝葉斯對鳶尾花資料進行分類 程式碼: 1 # 通過樸素貝葉斯對鳶尾花資料進行分類 2 3 from sklearn import datasets 4 from sklearn.model_selection import train_

機器學習實戰(Machine Learning in Action)學習筆記————04.樸素分類(bayes)

機器學習實戰(Machine Learning in Action)學習筆記————04.樸素貝葉斯分類(bayes)關鍵字:樸素貝葉斯、python、原始碼解析作者:米倉山下時間:2018-10-25機器學習實戰(Machine Learning in Action,@author: Peter Harri

機器學習實戰——樸素Python實現記錄

問題:regEx= re.compile('\\W*') 屬於列印錯誤。 正確:     regEx = re.compile('\W*') regEx = re.compile('\W*') 關於'\W' 和'\w'區別,可參考部落格:https://

【ML學習筆記】樸素演算法的demo(機器學習實戰例子)

礙於這學期課程的緊迫,現在需要儘快從課本上掌握一些ML演算法,我本不想經過danger zone,現在看來卻只能儘快進入danger zone,數學理論上的缺陷只能後面找時間彌補了。 如果你在讀這篇文章,希望你不要走像我一樣的道路,此舉實在是出於無奈,儘量不要去做一個心

機器學習實戰-樸素

資料集參考自https://blog.csdn.net/c406495762/article/details/77341116 樸素貝葉斯:首先,何為樸素?樸素要求的是條件特徵之間相互獨立。我們都知道大名鼎鼎的貝葉斯公式,其實樸素貝葉斯的思想很簡單。就是通過計算屬於某一類別的後驗概率,然後比較大小,哪一類的

機器學習實戰——樸素

1 模型介紹 1.1 樸素貝葉斯分類器 樸素貝葉斯是基於貝葉斯定理及特徵條件獨立的假設來實現分類的方法,就是在已知先驗概率的前提下,求後驗概率的最大值。 設樣本集合為 xxx ,其屬性集合為 {x1,x2,⋯ ,xd}\{x_1,