1. 程式人生 > >【機器學習實戰】網格搜尋--貝葉斯新聞文字分類器調優

【機器學習實戰】網格搜尋--貝葉斯新聞文字分類器調優

#對文字分類的樸素貝葉斯模型的超引數組合進行網格搜尋
#從sklearn.datasets中匯入20類新聞文字抓取器
from sklearn.datasets import fetch_20newsgroups
import numpy as np

#抓取新聞資料
news=fetch_20newsgroups(subset='all')

#資料集分割
from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test=train_test_split(news.data[:3000],
        news.target[:3000
],test_size=0.25,random_state=33) #SVM from sklearn.svm import SVC #匯入TfidVectorizer文字抽取器 from sklearn.feature_extraction.text import TfidfVectorizer #匯入Pipeline from sklearn.pipeline import Pipeline #使用pipeline簡化系統搭建流程,將文字抽取與分類模型串聯 clf=Pipeline([('vect',TfidfVectorizer(stop_words='english',analyzer='word'
)),('svc',SVC())]) #超引數 parameters={'svc__gamma':np.logspace(-2,1,4),'svc__C':np.logspace(-1,1,3)} #網格搜尋模型GridSearchCV from sklearn.model_selection import GridSearchCV #初始化單執行緒網格搜尋 gs=GridSearchCV(clf,parameters,verbose=2,refit=True,cv=3) #初始化配置並行網格搜尋,n_jobs=-1代表使用該計算機全部的CPU gs=GridSearchCV(clf,parameters,verbose=2
,refit=True,cv=3,n_jobs=-1) time_=gs.fit(X_train,y_train) gs.best_params_,gs.best_score_ #輸出最佳模型在測試集上的準確性 print(gs.score(X_test,y_test)) #0.822666666667

單執行緒
這裡寫圖片描述

多執行緒,並行
這裡寫圖片描述