君不見,黃河之水天上來,奔流到海不復回。
君不見,高堂明鏡悲白髮,朝如青絲暮成雪。
--李白 《將進酒》
1、概念
通過一定的策略組合多個學習器(稱為基學習器)完成學習任務,相比單個學習器學習效果更好。
2、三種集成算法
(1)Bagging
並行的訓練多個分類器,取平均值(也可以是加權平均,或其它策略)
代表算法:隨機森林
(2)Boosting
依次串行的訓練基學習器,每訓練一個模型,重新調整樣本的權重,使下一個模型更加重視上一次訓練出錯的樣本。
代表算法:AdaBoost、Xgboost
(3)Stacking
分兩階段堆疊分類器,第一階段訓練多個分類器,將學習的結果作為特徵輸入第二階段訓練一個高層學習器。
(1)加載數據
from sklearn import model_selectionfrom sklearn.datasets import load_irisfrom sklearn.ensemble import AdaBoostClassifierfrom sklearn.ensemble import BaggingClassifier, RandomForestClassifierfrom sklearn.ensemble import StackingClassifierfrom sklearn.linear_model import LogisticRegressionfrom sklearn.pipeline import make_pipelinefrom sklearn.preprocessing import StandardScalerfrom sklearn.svm import LinearSVCfrom sklearn.tree import DecisionTreeClassifier
data = load_iris()x = data.datay = data.targetkfold = model_selection.KFold(n_splits=10, random_state=0, shuffle=True)(2)Bagging
model = BaggingClassifier(base_estimator=DecisionTreeClassifier(), n_estimators=100, random_state=0)score = model_selection.cross_val_score(model, x, y, cv=kfold)print(score.mean())(3)Bosting
model = AdaBoostClassifier(base_estimator=DecisionTreeClassifier(), n_estimators=100, random_state=0)score = model_selection.cross_val_score(model, x, y, cv=kfold)print(score.mean())(4)Stacking
estimators = [ ('rf', RandomForestClassifier(n_estimators=10, random_state=42)), ('svr', make_pipeline(StandardScaler(), LinearSVC(random_state=42)))]model = StackingClassifier(estimators=estimators, final_estimator=LogisticRegression())score = model_selection.cross_val_score(model, x, y, cv=kfold)print(score.mean())加小編微信(備註:機器學習)
拉你入「機器學習交流群」