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