国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【實踐】隨機森林算法參數(shù)解釋及調(diào)優(yōu)(含Python代碼)

這篇具有很好參考價值的文章主要介紹了【實踐】隨機森林算法參數(shù)解釋及調(diào)優(yōu)(含Python代碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

上篇文章梳理了隨機森林的各理論要點,本文首先詳細解釋了隨機森林類的參數(shù)含義,并基于該類講解了參數(shù)擇優(yōu)過程。

隨機森林類庫包含了RandomForestClassifer類,回歸類是RandomForestRegressor類。RF的變種ExtraTress也有ExtraTressClassifier類和ExtraTressRegressor類。由于這四個類的參數(shù)基本相同,只要完全理解其中一個類,其他三個類很快就能上手。

本文只介紹RandomForestClassifer類。

隨機森林是基于bagging框架的決策樹模型,因此隨機森林的參數(shù)擇優(yōu)包括兩部分:

(1)RF框架的參數(shù)擇優(yōu);

(2)RF決策樹的參數(shù)擇優(yōu)。因此,理解RF框架參數(shù)和決策樹參數(shù)的含義是模型參數(shù)擇優(yōu)的前提。

RF框架參數(shù)含義

n_estimators : 對原始數(shù)據(jù)集進行有放回抽樣生成的子數(shù)據(jù)集個數(shù), 即決策樹的個數(shù)。若n_estimators太小容易欠擬合,太大不能顯著的提升模型,所以n_estimators選擇適中的數(shù)值。

bootstrp:是否對樣本集進行有放回抽樣來構(gòu)建樹,True表示是,默認值True

oob_score:是否采用袋外樣本來評估模型的好壞,True代表是,默認值False,袋外樣本誤差是測試數(shù)據(jù)集誤差的無偏估計,所以推薦設(shè)置True。

RF框架的參數(shù)很少,框架參數(shù)擇優(yōu)一般是調(diào)節(jié)n_estimators值,即決策樹個數(shù)。

RF決策樹參數(shù)含義

max_features:構(gòu)建決策樹最優(yōu)模型時考慮的最大特征數(shù)。默認是”auto“,表示最大特征數(shù)是N的平方根;“l(fā)og2”表示最大特征數(shù)是 log ? 2 N \log_2^N log2N?,;"sqrt"表示最大特征數(shù)為 N \sqrt{N} N ?,。如果是整數(shù),代表考慮的最大特征數(shù);如果是浮點數(shù),表示對(N*max_features)取整。其中N表示樣本的特征數(shù)。

max_depth:決策樹最大深度。若等于None,表示決策樹在構(gòu)建最優(yōu)模型的時候不會限制子樹的深度。如果模型樣本量多,特征也多的情況下,推薦限制最大深度;若樣本量少或者特征少,則不限制最大深度。

min_samples_leaf:葉子節(jié)點含有的最少樣本。若葉子節(jié)點樣本數(shù)小于min_samples_leaf,則對該葉子節(jié)點和兄弟葉子節(jié)點進行剪枝,只留下該葉子節(jié)點的父節(jié)點。整數(shù)型表示個數(shù),浮點型表示取大于等于(樣本數(shù)*min_samples_leaf)的最小整數(shù)。min_samples_leaf默認值是1。

min_samples_split : 節(jié)點可分的最小樣本數(shù), 默認值是2 。整數(shù)型和浮點型的含義與min_samples_leaf類似。

max_leaf_nodes:最大葉子節(jié)點數(shù)。int設(shè)置節(jié)點數(shù),None表示對葉子節(jié)點數(shù)沒有限制。

min_impurity_decrease:節(jié)點劃分的最小不純度。假設(shè)不純度用信息增益表示,若某節(jié)點劃分時的信息增益大于等于min_impurity_decrease,那么該節(jié)點還可以再劃分;反之,則不能劃分。

criterion:表示節(jié)點的劃分標(biāo)準(zhǔn)。不純度標(biāo)準(zhǔn)參考Gini指數(shù),信息增益標(biāo)準(zhǔn)參考"entrop"熵。

min_samples_leaf:葉子節(jié)點最小的樣本權(quán)重和。葉子節(jié)點如果小于這個值,則會和兄弟節(jié)點一起被剪枝,只保留該葉子節(jié)點的父節(jié)點。默認是0,則不考慮樣本權(quán)重問題。一般來說,如果有較多樣本的缺失值或偏差很大,則嘗試設(shè)置該參數(shù)值。

RF參數(shù)擇優(yōu)實例

RF參數(shù)擇優(yōu)思想:RF模型可以理解成決策樹模型嵌入到bagging框架,因此,我們首先對外層的bagging框架進行參數(shù)擇優(yōu),然后再對內(nèi)層的決策樹模型進行參數(shù)擇優(yōu)。在優(yōu)化某一參數(shù)時,需要把其他參數(shù)設(shè)置為常數(shù)。

導(dǎo)入相關(guān)的包:

import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV

訓(xùn)練數(shù)據(jù)集:

X,y=make_classification()
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=1)

我們不妨看一下所有參數(shù)都采用默認值,查看分類情況:

estimator=RandomForestClassifier(oob_score=True,random_state=1)
estimator.fit(X_train,y_train)
print(estimator.oob_score_)
0.9375

對外層的bagging框架進行參數(shù)擇優(yōu),即對n_estimators參數(shù)擇優(yōu),其他參數(shù)仍然是默認值

n_esimators參數(shù)擇優(yōu)的范圍是:1~101,步長為10。十折交叉驗證率選擇最優(yōu)n_estimators 。

param_test1={'n_estimators':range(1,101,10)}
grid_search=GridSearchCV(estimator=RandomForestClassifier(random_state=1),param_grid=param_test1,scoring='roc_auc',cv=10)
grid_search.fit(X_train,y_train)
print(grid_search.best_params_)
print(grid_search.best_score_)

輸出結(jié)果:

{'n_estimators': 41}
0.9800000000000001

因此,最佳的子決策樹個數(shù)是71,準(zhǔn)確率98%,相比默認參數(shù)的93.7%有較大的提高。

優(yōu)化決策樹參數(shù)的最大特征數(shù)max_features,其他參數(shù)設(shè)置為常數(shù),且n_estimators為41

max_features參數(shù)擇優(yōu)的范圍:1~11,步長為1,十折交叉驗證率選擇最優(yōu)max_features 。

param_test2={'max_features':range(1,21,1)}
grid_search_1=GridSearchCV(estimator=RandomForestClassifier(n_estimators=grid_search.best_params_['n_estimators'],random_state=1),param_grid=param_test2,scoring='roc_auc',cv=10)
grid_search_1.fit(X_train,y_train)
print(grid_search_1.best_params_)
print(grid_search_1.best_score_)

結(jié)果:

{'max_features': 4}
0.9800000000000001

因此,選擇最佳的最大特征數(shù)為4,準(zhǔn)確率為98%,相比默認的最大特征數(shù),準(zhǔn)確率有一定的提高。

決策樹的其他最優(yōu)參數(shù)也是按照類似的步驟去搜尋,這里就不一一介紹了。

用最優(yōu)參數(shù)重新訓(xùn)練數(shù)據(jù),計算泛化誤差:

rfl=RandomForestClassifier(n_estimators=grid_search.best_params_['n_estimators'],max_features=grid_search_1.best_params_['max_features'],oob_score=True,random_state=1)
rfl.fit(X_train,y_train)
print(rfl.oob_score_)
0.9125

總結(jié)

隨機森林模型優(yōu)化主要是考慮如何選擇子數(shù)據(jù)集個數(shù)( n_estimators ) 和最大特征個數(shù)(max_features),參數(shù)優(yōu)化順序可參考下圖:
randomforestclassifier參數(shù),機器學(xué)習(xí)系列文章,python,算法,隨機森林,機器學(xué)習(xí),決策樹

首先增大n_estimators,提高模型的擬合能力,當(dāng)模型的擬合能力沒有明顯提升的時候,則再增大n_estimators,提高每個子模型的擬合能力,則相應(yīng)的提高了模型的擬合能力。

上節(jié)的參數(shù)調(diào)優(yōu)是比較常用的一種參數(shù)調(diào)優(yōu)方法,可應(yīng)用到其他模型的參數(shù)優(yōu)化過程。文章來源地址http://www.zghlxwxcb.cn/news/detail-816716.html

完整版代碼

import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV

X,y=make_classification()
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=1)
estimator=RandomForestClassifier(oob_score=True,random_state=1)
estimator.fit(X_train,y_train)
print(estimator.oob_score_)

"""
對外層的bagging框架進行參數(shù)擇優(yōu),即對n_estimators參數(shù)擇優(yōu),其他參數(shù)仍然是默認值
"""
param_test1={'n_estimators':range(1,101,10)}
grid_search=GridSearchCV(estimator=RandomForestClassifier(random_state=1),param_grid=param_test1,scoring='roc_auc',cv=10)
grid_search.fit(X_train,y_train)
print(grid_search.best_params_)
print(grid_search.best_score_)

"""
優(yōu)化決策樹參數(shù)的最大特征數(shù)max_features,其他參數(shù)設(shè)置為常數(shù),且n_estimators為81
"""
param_test2={'max_features':range(1,21,1)}
grid_search_1=GridSearchCV(estimator=RandomForestClassifier(n_estimators=grid_search.best_params_['n_estimators'],random_state=1),param_grid=param_test2,scoring='roc_auc',cv=10)
grid_search_1.fit(X_train,y_train)
print(grid_search_1.best_params_)
print(grid_search_1.best_score_)

"""
用最優(yōu)參數(shù)重新訓(xùn)練數(shù)據(jù),計算泛化誤差
"""
rfl=RandomForestClassifier(n_estimators=grid_search.best_params_['n_estimators'],max_features=grid_search_1.best_params_['max_features'],oob_score=True,random_state=1)
rfl.fit(X_train,y_train)
print(rfl.oob_score_)

到了這里,關(guān)于【實踐】隨機森林算法參數(shù)解釋及調(diào)優(yōu)(含Python代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 隨機森林算法(Random Forest)原理分析及Python實現(xiàn)

    隨機森林算法(Random Forest)原理分析及Python實現(xiàn)

    隨機森林是bagging集成策略中最實用的算法之一。森林是分別建立了多個決策樹,把它們放到一起就是森林,這些決策樹都是為了解決同一任務(wù)建立的,最終的目標(biāo)也都是一致的,最后將其結(jié)果來平均即可,如圖所示。 從給定的訓(xùn)練數(shù)據(jù)集中學(xué)習(xí)出一個函數(shù)(模型參數(shù)),當(dāng)

    2024年02月02日
    瀏覽(29)
  • Python實現(xiàn)PSO粒子群優(yōu)化算法優(yōu)化隨機森林分類模型(RandomForestClassifier算法)項目實戰(zhàn)

    Python實現(xiàn)PSO粒子群優(yōu)化算法優(yōu)化隨機森林分類模型(RandomForestClassifier算法)項目實戰(zhàn)

    說明:這是一個機器學(xué)習(xí)實戰(zhàn)項目(附帶數(shù)據(jù)+代碼+文檔+視頻講解),如需數(shù)據(jù)+代碼+文檔+視頻講解可以直接到文章最后獲取。 PSO是粒子群優(yōu)化算法(Particle Swarm Optimization)的英文縮寫,是一種基于種群的隨機優(yōu)化技術(shù),由Eberhart和Kennedy于1995年提出。粒子群算法模仿昆蟲、

    2024年02月13日
    瀏覽(23)
  • Python實現(xiàn)貝葉斯優(yōu)化器(Bayes_opt)優(yōu)化隨機森林分類模型(RandomForestClassifier算法)項目實戰(zhàn)

    Python實現(xiàn)貝葉斯優(yōu)化器(Bayes_opt)優(yōu)化隨機森林分類模型(RandomForestClassifier算法)項目實戰(zhàn)

    說明:這是一個機器學(xué)習(xí)實戰(zhàn)項目(附帶 數(shù)據(jù)+代碼+文檔+視頻講解 ),如需 數(shù)據(jù)+代碼+文檔+視頻講解 可以直接到文章最后獲取。 貝葉斯優(yōu)化器(BayesianOptimization) 是一種黑盒子優(yōu)化器,用來尋找最優(yōu)參數(shù)。 貝葉斯優(yōu)化器是基于高斯過程的貝葉斯優(yōu)化,算法的參數(shù)空間中有大

    2024年02月11日
    瀏覽(33)
  • python機器學(xué)習(xí)——分類模型評估 & 分類算法(k近鄰,樸素貝葉斯,決策樹,隨機森林,邏輯回歸,svm)

    python機器學(xué)習(xí)——分類模型評估 & 分類算法(k近鄰,樸素貝葉斯,決策樹,隨機森林,邏輯回歸,svm)

    交叉驗證:為了讓被評估的模型更加準(zhǔn)確可信 交叉驗證:將拿到的數(shù)據(jù),分為訓(xùn)練和驗證集。以下圖為例:將數(shù)據(jù)分成5份,其中一份作為驗證集。然后經(jīng)過5次(組)的測試,每次都更換不同的驗證集。即得到5組模型的結(jié)果,取平均值作為最終結(jié)果。又稱5折交叉驗證。 通常情

    2024年02月03日
    瀏覽(31)
  • 分類算法系列⑥:隨機森林

    分類算法系列⑥:隨機森林

    目錄 集成學(xué)習(xí)方法之隨機森林 1、集成學(xué)習(xí)方法 2、隨機森林 3、隨機森林原理 為什么采用BootStrap抽樣 為什么要有放回地抽樣 4、API 5、代碼 代碼解釋 結(jié)果 6、隨機森林總結(jié) ? ??作者介紹:雙非本科大三網(wǎng)絡(luò)工程專業(yè)在讀,阿里云專家博主,專注于Java領(lǐng)域?qū)W習(xí),擅長web應(yīng)用

    2024年02月10日
    瀏覽(20)
  • 隨機森林回歸算法講解

    ChatGPT中文版點我跳轉(zhuǎn) 恰飯廣告,望各位貴客支持,感謝 學(xué)習(xí)基礎(chǔ)算法的過程中,幾乎任何問題都可以用恰飯的那個網(wǎng)站解決哦! 隨機森林(Random Forest)是一種基于集成學(xué)習(xí)的機器學(xué)習(xí)算法,被廣泛用于回歸問題。它通過使用多個決策樹對數(shù)據(jù)進行建模,并將它們的預(yù)測結(jié)

    2024年02月03日
    瀏覽(18)
  • 隨機森林算法深入淺出

    目錄 一 隨機森林算法的基本原理 二 隨機森林算法的優(yōu)點 1. 隨機森林算法具有很高的準(zhǔn)確性和魯棒性 2. 隨機森林算法可以有效地避免過擬合問題 3. 隨機森林算法可以處理高維度數(shù)據(jù) 4. 隨機森林算法可以評估特征的重要性 三 隨機森林算法的缺點 1. 隨機森林算法對于少量數(shù)

    2023年04月08日
    瀏覽(26)
  • 無涯教程-分類算法 - 隨機森林

    隨機森林是一種監(jiān)督學(xué)習(xí)算法,可用于分類和回歸,但是,它主要用于分類問題,眾所周知,森林由樹木組成,更多樹木意味著更堅固的森林。同樣,隨機森林算法在數(shù)據(jù)樣本上創(chuàng)建決策樹,然后從每個樣本中獲取預(yù)測,最后通過投票選擇最佳解決方案。它是一種集成方法,

    2024年02月11日
    瀏覽(15)
  • 四、分類算法 - 隨機森林

    四、分類算法 - 隨機森林

    目錄 1、集成學(xué)習(xí)方法 2、隨機森林 3、隨機森林原理 4、API 5、總結(jié) sklearn轉(zhuǎn)換器和估算器 KNN算法 模型選擇和調(diào)優(yōu) 樸素貝葉斯算法 決策樹 隨機森林

    2024年02月22日
    瀏覽(18)
  • 分類算法-隨機森林實戰(zhàn)案例

    分類算法-隨機森林實戰(zhàn)案例

    ????????隨機森林是一種 有監(jiān)督學(xué)習(xí)算法 ,是以決策樹為基學(xué)習(xí)器的 集成學(xué)習(xí)算法 。???????? ????????那什么是有監(jiān)督學(xué)習(xí)呢?有監(jiān)督學(xué)習(xí)就是把有已知結(jié)果的數(shù)據(jù)集拿去訓(xùn)練,如果訓(xùn)練結(jié)果與標(biāo)準(zhǔn)答案的精度足夠高就可以使用這個模型去預(yù)測或者分類未知結(jié)果

    2023年04月16日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包