更新時間:2021-09-16 來源:黑馬程序員 瀏覽量:
在機器學習中,隨機森林是一個包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數(shù)而定。
隨機森林 = Bagging + 決策樹
例如, 如果你訓練了5個樹, 其中有4個樹的結(jié)果是True, 1個樹的結(jié)果是False, 那么最終投票結(jié)果就是True隨機森林夠造過程中的關(guān)鍵步驟(M表示特征數(shù)目):
1)一次隨機選出一個樣本,有放回的抽樣,重復N次(有可能出現(xiàn)重復的樣本)
2) 隨機去選出m個特征, m <<m,建立決策樹< p="">
思考
1.為什么要隨機抽樣訓練集?
如果不進行隨機抽樣,每棵樹的訓練集都一樣,那么最終訓練出的樹分類結(jié)果也是完全一樣的
2.為什么要有放回地抽樣?
如果不是有放回的抽樣,那么每棵樹的訓練樣本都是不同的,都是沒有交集的,這樣每棵樹都是“有偏的”,都是絕對“片面的”(當然這樣說可能不對),也就是說每棵樹訓練出來都是有很大的差異的;而隨機森林最后分類取決于多棵樹(弱分類器)的投票表決。
隨機森林api介紹
max_features=sqrt(n_features)
.max_features=sqrt(n_features)
(same as "auto").max_features=log2(n_features)
.max_features=n_features
.實例化隨機森林
# 隨機森林去進行預測 rf = RandomForestClassifier()
定義超參數(shù)的選擇列表
param = {"n_estimators": [120,200,300,500,800,1200], "max_depth": [5, 8, 15, 25, 30]}
使用GridSearchCV進行網(wǎng)格搜索
# 超參數(shù)調(diào)優(yōu)gc = GridSearchCV(rf, param_grid=param, cv=2) gc.fit(x_train, y_train) print("隨機森林預測的準確率為:", gc.score(x_test, y_test))
注意:
隨機森林的建立過程
樹的深度、樹的個數(shù)等需要進行超參數(shù)調(diào)優(yōu)