【Kaggle筆記】新聞文字分類(樸素貝葉斯)
阿新 • • 發佈:2019-01-09
樸素貝葉斯模型適用場景
- 海量文字分類任務
- 假設資料特徵與目標之間存線上性關係
資料集
- sklearn 中的 fetch_20newsgroups
程式碼
# -*- coding: utf-8 -*-
"""
20 news groups classify
模型
樸數貝葉斯
"""
# 從sklearn.datasets裡匯入新聞資料抓取器fetch_20newsgroups。
from sklearn.datasets import fetch_20newsgroups
# 與之前預存的資料不同,fetch_20newsgroups需要即時從網際網路下載資料。
news = fetch_20newsgroups(subset='all' )
# 查驗資料規模和細節。
print(len(news.data))
print(news.data[0])
# 從sklearn.cross_validation 匯入 train_test_split。
from sklearn.cross_validation import train_test_split
# 隨機取樣25%的資料樣本作為測試集。
X_train, X_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25, random_state=33)
# 從sklearn.feature_extraction.text裡匯入用於文字特徵向量轉化模組。詳細介紹請讀者參考3.1.1.1 特徵抽取一節。
from sklearn.feature_extraction.text import CountVectorizer
vec = CountVectorizer()
X_train = vec.fit_transform(X_train)
X_test = vec.transform(X_test)
# 從sklearn.naive_bayes裡匯入樸素貝葉斯模型。
from sklearn.naive_bayes import MultinomialNB
# 從使用預設配置初始化樸素貝葉斯模型。
mnb = MultinomialNB()
# 利用訓練資料對模型引數進行估計。
mnb.fit(X_train, y_train)
# 對測試樣本進行類別預測,結果儲存在變數y_predict中。
y_predict = mnb.predict(X_test)
# 從sklearn.metrics裡匯入classification_report用於詳細的分類效能報告。
from sklearn.metrics import classification_report
print('The accuracy of Naive Bayes Classifier is', mnb.score(X_test, y_test))
print(classification_report(y_test, y_predict, target_names = news.target_names))