1. 程式人生 > >【Kaggle筆記】新聞文字分類(樸素貝葉斯)

【Kaggle筆記】新聞文字分類(樸素貝葉斯)

樸素貝葉斯模型適用場景

  • 海量文字分類任務
  • 假設資料特徵與目標之間存線上性關係

資料集

  • 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))

效果