Scikit-Learn機器學習之監督學習模型案例集-新聞/郵件文字內容分類(樸素貝葉斯演算法模型)
阿新 • • 發佈:2019-01-04
最簡單的辦法
下載'20news-bydate.pkz', 放到C:\\Users\[Current user]\scikit_learn_data 下邊就行.
2.1. 手動下載 檔案
存放到scikit_learn_data/20news_home/下 解壓開
2.2 改site-package/sklearn/datasets/twenty_newsgroups.py裡的函式: download_20newsgroups
註釋掉下邊程式碼:執行自動合併成 20news-bydate_py3.pkz
# logger.info("Downloading dataset from %s (14 MB)", ARCHIVE.url) # archive_path = _fetch_remote(ARCHIVE, dirname=target_dir) # # logger.debug("Decompressing %s", archive_path) # tarfile.open(archive_path, "r:gz").extractall(path=target_dir) # os.remove(archive_path)
from sklearn.datasets import fetch_20newsgroups news = fetch_20newsgroups(subset='all') # 檢視資料規模和細節 print(len(news.data)) # 從 sklearn.cross_validation 中匯入 train_test_split 用於資料分割 from sklearn.model_selection import train_test_split # 從使用 train_test_split,利用隨機種子 random_state 取樣 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 裡選擇匯入特徵值向量轉化模組 CounterVectorizer 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裡選擇匯入 MultinomialNB from sklearn.naive_bayes import MultinomialNB # 使用樸素貝葉斯分類器物件 mnb = MultinomialNB() # 模型訓練 mnb.fit(X_train, y_train) score=mnb.score(X_test,y_test) print(score) # 匯入模型評估模組 from sklearn import metrics result = mnb.predict(X_test) from sklearn.metrics import classification_report report=classification_report(y_test,result,target_names=news.target_names) print(report) # 建立兩個文章中出現的詞或短語 docs_new = ['God is love', 'OpenGL on thr GPU is fast'] # 特徵值向量化轉換 X_new_counts = vec.transform(docs_new) # 全文檢索 predict = mnb.predict(X_new_counts) # 迴圈輸出詞語或斷句出現在的分類中 for index in predict: print(news.target_names[index])