使用多種弱學習方法(即id3演算法,c4.5演算法,cart演算法)的組合,做多個分類模型,即多棵決策樹(模擬多專家投票),來獲取比原方法更優的分類結果。
#sklearn庫實現袋裝法改進分類結果,並做袋裝法和決策樹演算法效果對比
#載入庫函式
import sklearn.datasets as datasets
from sklearn.model_selection import kfold
from sklearn.model_selection import cross_val_score#ensemble就是整合演算法庫
from sklearn.ensemble import baggingclassifier #從庫中載入袋裝法函式
from sklearn.tree import decisiontreeclassifier
#載入iris資料集
iris=datasets.load_iris(
)x=iris.data
y=iris.target
#分類器及交叉驗證及訓練結果
seed=
42kfold=kfold(n_splits=
10,random_state=seed)
#10折交叉驗證
cart=decisiontreeclassifier(criterion=
'gini'
,max_depth=2)
#弱分類器是cart演算法
cart=cart.fit(x,y)
result=cross_val_score(cart,x,y,cv=kfold)
print
("決策樹結果:"
,result.mean())
model=baggingclassifier(base_estimator=cart,n_estimators=
100,random_state=seed)
result=cross_val_score(model,x,y,cv=kfold)
print
("裝袋法改進後結果:"
,result.mean(
))
#sklearn庫實現提公升法改進分類結果,並做提公升法和決策樹演算法效果對比
#載入庫函式
import sklearn.datasets as datasets
from sklearn.model_selection import kfold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import adaboostclassifier #從庫中載入提公升法函式
from sklearn.tree import decisiontreeclassifier
#載入資料集
dataset_all=datasets.load_breast_cancer(
)x=dataset_all.data
y=dataset_all.target
#分類器及交叉驗證及訓練結果
seed=
42kfold=kfold(n_splits=
10,random_state=seed)
#10折交叉驗證
dtree=decisiontreeclassifier(criterion=
'gini'
,max_depth=2)
#弱分類器是cart演算法
dtree=dtree.fit(x,y)
result=cross_val_score(dtree,x,y,cv=kfold)
print
("決策樹結果:"
,result.mean())
model=adaboostclassifier(base_estimator=dtree,n_estimators=
100,random_state=seed)
result=cross_val_score(model,x,y,cv=kfold)
print
("提公升法改進後結果:"
,result.mean(
))
#python實現隨機森林樣本抽取
#載入庫函式
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
import sklearn.datasets as datasets
from sklearn.model_selection import kfold
from sklearn.model_selection import cross_val_score#ensemble就是整合演算法庫
from sklearn.ensemble import randomforestclassifier #從庫中載入隨機森林函式
from sklearn.ensemble import extratreesclassifier
from sklearn.tree import decisiontreeclassifier
#隨機森林抽取隨機樣本
x,y=make_blobs(n_samples=
1000
,n_features=
6,centers=
50,random_state=0)
plt.scatter(x[:,
0],x[:,1
],c=y)
#畫散點圖,不同顏色代表不同樣本
plt.show(
)
整合學習的決策樹的演算法
常見的整合學習框架有三種 bagging boosting 和 stacking。三種整合學習框架在基學習器的產生和綜合結果的方式上會有些區別,我們先做些簡單的介紹。1.1 bagging bagging 全稱叫 bootstrap aggregating,看到 bootstrap 我們立刻想到著名...
決策樹與整合學習
由於機器學習涉及的方法很廣,對機器學習有了乙個橫向巨集觀的把握之後,需要縱向對某一類方法進行深入的學習。因為要研究的課題內容是有監督學習,因此選擇一類有監督的學習方法進行深入的研究 整合學習綜述 2016年10月 目前來說機器學習的研究主要分為四個大方向 a 通過整合學習方法提高學習精度 b 擴大學...
機器學習 決策樹與整合演算法
樹模型 決策樹 從根節點開始一步步走到葉子節點 決策 決策樹所有的資料最終都會落到葉子節點,既可以做分類也可以做回歸 樹的組成 根節點 第乙個選擇點 決策樹非葉子節點與分支 中間過程 葉子節點 最終的決策結果 決策樹的訓練與測試 訓練階段 從給定的訓練集構造出來一棵樹 從跟節點開始選擇特徵,如何進行...