Zi 字媒體
2017-07-25T20:27:27+00:00
在Bagging單元中,我們分享到樣本可以透過Bootstrap的方式重複抽取後,進行不同弱學習器的建模。然而,在python執行中,細心的讀者會發現到,當我們採用sklearn套件裡面的Bagging方法時,這些弱學習器雖然可以自行選擇,但只能選一種,沒辦法交錯使用。比方說我們選擇了SVM當我們的弱學習器,那所有的弱學習器都是SVM,沒有辦法有些用SVM, 有些用決策樹或貝氏分類器等等。因此,今天我們要來分享,如何用Voting將這些”不同類型”的弱學習器結合在一起!
Python 運行
想要結合不同類型的弱學習器時,我們可以透過sklear.ensemble套件裡所提供的voting方法來運行。其中VotingClassifier適合用在分類問題,VotingRegressor則適合用在連續型資料。
引入套件及資料
from sklearn.ensemble import VotingClassifierfrom sklearn import datasetsfrom sklearn.model_selection import train_test_splitimport matplotlib.pyplot as plt%matplotlib inline
在這邊,我們一樣採用sklearn所提供的鳶尾花資料集來演示,因鳶尾花屬於分類問題,故我們這邊引入VotingClassifier。大家手邊有資料的話也可以採用自己的資料進行,如果是連續型問題,可以改為引入VotingRegressor。下載好資料後,我們將樣本區分為訓練集以及測試集。
iris=datasets.load_iris()X=iris.datay=iris.targetX_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.3,random_state=0)
Voting
進行Voting主要有三個步驟,第一步引入我們想要使用的子模型套件,第二步將這些模型存成一個list,最後只要依照我們所熟悉的建模方式進行就完成了!詳細過程歡迎參考影片。
引入子模型套件:from sklearn.svm import SVCfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.naive_bayes import GaussianNB
將子模型存成list:model_list=[]m1=SVC()model_list.append(('svm',m1))m2=DecisionTreeClassifier()model_list.append(('DT',m2))m3=GaussianNB()model_list.append(('NB',m3))vc=VotingClassifier(model_list)
建模:vc.fit(X_train,y_train)
預測:vc.predict(X_test)
準確度評比:vc.score(X_test,y_test)
延伸閱讀
Ensemble Learning: 三個臭皮匠,勝過一個諸葛亮! Bagging!
Ensemble Learning: 一步步的修正, Boosting!
程式檔案,歡迎下載Github
寫了
5860316篇文章,獲得
23313次喜歡