首頁(yè)人工智能技術(shù)資訊正文

隨機(jī)森林構(gòu)造有哪些步驟?隨機(jī)森林構(gòu)造案例

更新時(shí)間:2021-09-16 來源:黑馬程序員 瀏覽量:

在機(jī)器學(xué)習(xí)中,隨機(jī)森林是一個(gè)包含多個(gè)決策樹的分類器,并且其輸出的類別是由個(gè)別樹輸出的類別的眾數(shù)而定。

隨機(jī)森林 = Bagging + 決策樹

例如, 如果你訓(xùn)練了5個(gè)樹, 其中有4個(gè)樹的結(jié)果是True, 1個(gè)樹的結(jié)果是False, 那么最終投票結(jié)果就是True隨機(jī)森林夠造過程中的關(guān)鍵步驟(M表示特征數(shù)目):

1)一次隨機(jī)選出一個(gè)樣本,有放回的抽樣,重復(fù)N次(有可能出現(xiàn)重復(fù)的樣本)

 2) 隨機(jī)去選出m個(gè)特征, m <<m,建立決策樹< p="">

思考

1.為什么要隨機(jī)抽樣訓(xùn)練集?

如果不進(jìn)行隨機(jī)抽樣,每棵樹的訓(xùn)練集都一樣,那么最終訓(xùn)練出的樹分類結(jié)果也是完全一樣的

2.為什么要有放回地抽樣?

如果不是有放回的抽樣,那么每棵樹的訓(xùn)練樣本都是不同的,都是沒有交集的,這樣每棵樹都是“有偏的”,都是絕對(duì)“片面的”(當(dāng)然這樣說可能不對(duì)),也就是說每棵樹訓(xùn)練出來都是有很大的差異的;而隨機(jī)森林最后分類取決于多棵樹(弱分類器)的投票表決。

隨機(jī)森林api介紹

  • sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
    • n_estimators:integer,optional(default = 10)森林里的樹木數(shù)量120,200,300,500,800,1200
    • Criterion:string,可選(default =“gini”)分割特征的測(cè)量方法
    • max_depth:integer或None,可選(默認(rèn)=無)樹的最大深度 5,8,15,25,30
    • max_features="auto”,每個(gè)決策樹的最大特征數(shù)量
      • If "auto", then max_features=sqrt(n_features).
      • If "sqrt", then max_features=sqrt(n_features)(same as "auto").
      • If "log2", then max_features=log2(n_features).
      • If None, then max_features=n_features.
    • bootstrap:boolean,optional(default = True)是否在構(gòu)建樹時(shí)使用放回抽樣
    • min_samples_split:節(jié)點(diǎn)劃分最少樣本數(shù)
    • min_samples_leaf:葉子節(jié)點(diǎn)的最小樣本數(shù)
  • 超參數(shù):n_estimator, max_depth, min_samples_split,min_samples_leaf
隨機(jī)森林預(yù)測(cè)案例

實(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ī)森林的建立過程

樹的深度、樹的個(gè)數(shù)等需要進(jìn)行超參數(shù)調(diào)優(yōu)






猜你喜歡:

機(jī)器學(xué)習(xí)中入門級(jí)必學(xué)的算法有哪些?

什么是ORB算法?【OpenCV教程】

為什么CNN對(duì)像素級(jí)別的分類很難?

圖像的角點(diǎn)是什么?

黑馬程序員ai人工智能開發(fā)課程

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!