摘錄地址:http://www.csuldw.com/2015/07/22/2015-07-22%20%20ensemble/
介紹了bagging bootsrap randomforest
>>> from sklearn.ensemble import BaggingClassifier
>>> from sklearn.neighbors import KNeighborsClassifier
>>> bagging = BaggingClassifier(KNeighborsClassifier(),
max_samples=0.5, max_features=0.5)
模型生成
令n為訓(xùn)練數(shù)據(jù)的實例數(shù)量
對于t次循環(huán)中的每一次
從訓(xùn)練數(shù)據(jù)中采樣n個實例
將學(xué)習(xí)應(yīng)用于所采樣本
保存結(jié)果模型
分類
對于t個模型的每一個
使用模型對實例進(jìn)行預(yù)測
返回被預(yù)測次數(shù)最多的一個
---------------------------------分割線-----------------------------------------------------------
bagging與boosting的區(qū)別:
二者的主要區(qū)別是取樣方式不同饺窿。bagging采用均勻取樣,而Boosting根據(jù)錯誤率來取樣铺然,因此boosting的分類精度要優(yōu)于Bagging撇吞。bagging的訓(xùn)練集的選擇是隨機的,各輪訓(xùn)練集之間相互獨立堆巧,而boostlng的各輪訓(xùn)練集的選擇與前面各輪的學(xué)習(xí)結(jié)果有關(guān)妄荔;bagging的各個預(yù)測函數(shù)沒有權(quán)重,而boosting是有權(quán)重的谍肤;bagging的各個預(yù)測函數(shù)可以并行生成啦租,而boosting的各個預(yù)測函數(shù)只能順序生成。對于象神經(jīng)網(wǎng)絡(luò)這樣極為耗時的學(xué)習(xí)方法荒揣。bagging可通過并行訓(xùn)練節(jié)省大量時間開銷篷角。
bagging和boosting都可以有效地提高分類的準(zhǔn)確性。在大多數(shù)數(shù)據(jù)集中系任,boosting的準(zhǔn)確性比bagging高恳蹲。在有些數(shù)據(jù)集中,boosting會引起退化—- Overfit俩滥。
------------------------------------------分割線----------------------------------------------------
from sklearn.cross_validation import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier
>>> iris = load_iris()
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, iris.data, iris.target)
>>> scores.mean()
0.9...
隨機森林代碼如下:
from sklearn.ensemble import RandomForestClassifier
>>> X = [[0, 0], [1, 1]]
>>> Y = [0, 1]
>>> clf = RandomForestClassifier(n_estimators=10)
>>> clf = clf.fit(X, Y)