在這次的貝葉斯試驗中,用到了交叉驗證,就是假如把資料集分成10份,每次取其中的乙份作為test資料,會得到10個測試的準確率,我們可以求10份的平均值,作為這一次的準確率。
當我們求出測試集的矩陣大小為
(18846, 173452),我們可以看出17萬個詞,其實在選擇特徵時用不了這麼多,接下來我們看一下選擇特徵維數為多少時沒會出現好的結果。
**:
from sklearn.datasets import fetch_20newsgroups
from sklearn.cross_validation import cross_val_score
from sklearn.feature_extraction.text import countvectorizer
import matplotlib.pyplot as plt
from sklearn.*****_bayes import multinomialnb
news=fetch_20newsgroups(subset='all')
x,y=news.data,news.target
k=list(range(10000,170000,10000))
k_score=
for i in k:
count=countvectorizer(analyzer='word',stop_words='english' ,max_features=i)
x_count=count.fit_transform(x)
mnb_count=multinomialnb()
# mnb_count.fit(x_count,y)
scores=cross_val_score(mnb_count,x_count,y,cv=10,scoring='accuracy')
score=scores.mean()
print(score)
print("維數",x_count.get_shape())
plt.plot(k,k_score)
plt.show()
結果:
看圖我們可以看出在選擇特徵為10萬時,準確率是最高的,之後就會下降,說明出現了過擬合的現象。所以我們選擇10萬個特徵就可以啦 TextBlob實戰之樸素貝葉斯文字分類
1.準備資料集 訓練集和測試集 train i love this sandwich.pos this is an amazing place pos i feel very good about these beers.pos this is my best work.pos what an aw...
貝葉斯文字分類原理
1 貝葉斯定理 貝葉斯條件概率公式的核心思想是利用容易知道的條件概率來推導出感興趣的條件概率,公式如下 p b a p a b p b p a 想要知道a發生後發生b的概率,可以用b發生後發生a的概率乘以b發生的概率再除a發生的概率。2 貝葉斯定理在文字分類中的具體使用原理 我們知道文字都是由乙個個...
樸素貝葉斯文字分類演算法java實現 二
為了加深理解,自己實現了多項式樸素貝葉斯對文字的自動分類。文字樣本採用了搜狗提供的文字分類語料庫.相關程式已經放在github上 bayesmain 主函式類 defaultstopwordshandler 單詞停用處理類 multinomialmodel bayes 多項式樸素貝葉斯實現類 tra...