今日分享:基於貝葉斯模型的新聞文本分類web
一:流程windows
一、從網站下載獲取數據集,該數據集也是由sklearn提供的,不過因爲數據集較大(其實也就15M左右),所以須要在使用時從網站直接下載(如若下載不成功,請在本QQ學習羣獲取)微信
二、數據集劃分網絡
三、進行特徵工程,對新聞文本數據進行 TF-IDF 提取electron
四、實例化貝葉斯估計器,訓練,預測ide
二:數據集介紹學習
該新聞數據集大約包含11314個新聞文本,共20大類測試
(單個新聞文本示例)
(類別編碼及實際類別描述)fetch
三:代碼演示網站
#導入相關庫
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report
def naba():
'''樸素貝葉斯新聞文本分類'''
#獲取數據集 網絡下載獲取 參數代表將訓練集和測試集的數據所有下載
news = fetch_20newsgroups(subset='all')
#劃分數據集
x_train,x_test,y_train,y_test = train_test_split(news.data,news.target,test_size=0.25)
#對文本進行特徵提取
tf = TfidfVectorizer()
x_train = tf.fit_transform(x_train)
# print(tf.get_feature_names())
x_test = tf.transform(x_test)
#貝葉斯實例化
mlt = MultinomialNB(alpha=1.0)
mlt.fit(x_train,y_train)
y_predict = mlt.predict(x_test)
print('預測的文章類別爲:',y_predict)
print('準確率爲:',mlt.score(x_test,y_test))
print('每一個類別的精確率和召回率:',
classification_report(y_test,y_predict,target_names = news.target_names))
if __name__ == '__main__':
naba()
輸出結果
預測的文章類別爲:
[16 6 4 ... 13 14 14]
準確率爲:
0.8539898132427843
每一個類別的精確率和召回率:
precision recall f1-score support
alt.atheism 0.84 0.78 0.81 179
comp.graphics 0.94 0.73 0.82 271
comp.os.ms-windows.misc 0.87 0.83 0.85 250
comp.sys.ibm.pc.hardware 0.79 0.77 0.78 254
comp.sys.mac.hardware 0.87 0.87 0.87 234
comp.windows.x 0.92 0.91 0.92 239
misc.forsale 0.92 0.72 0.81 248
rec.autos 0.91 0.90 0.90 245
rec.motorcycles 0.91 0.96 0.93 248
rec.sport.baseball 0.96 0.95 0.96 243
rec.sport.hockey 0.93 0.98 0.96 253
sci.crypt 0.81 0.98 0.88 251
sci.electronics 0.85 0.85 0.85 237
sci.med 0.96 0.90 0.93 247
sci.space 0.88 0.95 0.92 263
soc.religion.christian 0.56 0.98 0.71 241
talk.politics.guns 0.73 0.99 0.84 222
talk.politics.mideast 0.92 0.97 0.95 237
talk.politics.misc 0.97 0.60 0.74 192
talk.religion.misc 0.93 0.16 0.27 158
avg / total 0.87 0.85 0.85 4712
源代碼及數據集文件已上傳至QQ羣
公衆號 QQ羣
掃QQ羣二維碼進交流學習羣
或在後臺回覆:加羣
本文分享自微信公衆號 - 數據指南(BigDataDT)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。