亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋

系統(tǒng) 2141 0

作者:chen_h
微信號(hào) & QQ:862251340
微信公眾號(hào):coderpai


(一)機(jī)器學(xué)習(xí)中的集成學(xué)習(xí)入門(mén)

(二)bagging 方法

(三)使用Python進(jìn)行交易的隨機(jī)森林算法

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋


通過(guò)從單個(gè)決策樹(shù)構(gòu)建來(lái)使用和理解隨機(jī)森林

幸運(yùn)的是,對(duì)于像Scikit-Learn這樣的庫(kù),現(xiàn)在很容易在Python中實(shí)現(xiàn)數(shù)百種機(jī)器學(xué)習(xí)算法。這很容易,我們通常不需要任何關(guān)于模型是如何工作的知識(shí)來(lái)使用它。雖然不需要知道所有細(xì)節(jié),但了解機(jī)器學(xué)習(xí)模型如何工作仍然是非常有幫助的。這使我們可以在模型表現(xiàn)不佳時(shí)進(jìn)行修改參數(shù),或解釋模型如何做出決策,如果我們想要說(shuō)服別人相信我們的模型,這是至關(guān)重要的。

在本文中,我們將介紹如何在Python中構(gòu)建和使用Random Forest。除了查看代碼之外,我們還將嘗試了解此模型的工作原理。因?yàn)橛稍S多決策樹(shù)組成的隨機(jī)森林,我們首先要了解單個(gè)決策樹(shù)如何對(duì)一個(gè)簡(jiǎn)單的問(wèn)題進(jìn)行分類(lèi)。然后,我們將努力使用隨機(jī)森林來(lái)解決現(xiàn)實(shí)世界的數(shù)據(jù)科學(xué)問(wèn)題。

理解決策樹(shù)

決策樹(shù)是隨機(jī)森林的構(gòu)建塊,是一種非常直觀(guān)的模型。我們可以將決策樹(shù)視為一系列對(duì)我們數(shù)據(jù)進(jìn)行是/否分類(lèi)的問(wèn)題。這是一個(gè)可解釋的模型,因?yàn)樗梢韵裎覀內(nèi)祟?lèi)一樣進(jìn)行分類(lèi):在我們做出決定之前(在理想世界中),我們會(huì)詢(xún)問(wèn)有關(guān)可用數(shù)據(jù)的一系列查詢(xún),或者一系列特征。

在CART算法中,通過(guò)確定特征(稱(chēng)為節(jié)點(diǎn)的分裂)來(lái)構(gòu)建決策樹(shù),這些特征在經(jīng)過(guò)節(jié)點(diǎn)的時(shí)候通過(guò)Gini指數(shù)來(lái)進(jìn)行判斷。我們稍后會(huì)詳細(xì)討論關(guān)于Gini 指數(shù)的細(xì)節(jié),但首先,讓我們構(gòu)建一個(gè)決策樹(shù),以便我們能夠在高層次上理解它。

關(guān)于簡(jiǎn)單問(wèn)題的決策樹(shù)

我們將從一個(gè)非常簡(jiǎn)單的二分類(lèi)問(wèn)題開(kāi)始,如下所示:

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋_第1張圖片

我們的數(shù)據(jù)只有特征,x1 和 x2,圖中有 6 個(gè)數(shù)據(jù)樣本,分為兩個(gè)標(biāo)簽 0 和 1。雖然這個(gè)問(wèn)題非常簡(jiǎn)單,但它是線(xiàn)性不可分的,這意味著我們不能通過(guò)數(shù)據(jù)繪制一條直線(xiàn)來(lái)對(duì)數(shù)據(jù)進(jìn)行分類(lèi)。

然而,我們可以繪制一系列直線(xiàn),將數(shù)據(jù)點(diǎn)分成多個(gè)框,我們稱(chēng)之為節(jié)點(diǎn)。實(shí)際上,這就是決策樹(shù)在訓(xùn)練期間所進(jìn)行的操作。簡(jiǎn)單的說(shuō),決策樹(shù)就是通過(guò)構(gòu)造很多線(xiàn)性邊界來(lái)構(gòu)造的非線(xiàn)性模型。

為了創(chuàng)建決策樹(shù)并在數(shù)據(jù)上進(jìn)行訓(xùn)練,我們使用 sklearn 來(lái)進(jìn)行。

            
              
                from
              
               sklearn
              
                .
              
              tree 
              
                import
              
               DecisionTreeClassifier


              
                # Make a decision tree and train
              
              
tree 
              
                =
              
               DecisionTreeClassifier
              
                (
              
              random_state
              
                =
              
              RSEED
              
                )
              
              
tree
              
                .
              
              fit
              
                (
              
              X
              
                ,
              
               y
              
                )
              
            
          

在訓(xùn)練期間,我們?yōu)槟P吞峁┨卣骱蜆?biāo)簽,以便它可以根據(jù)特征進(jìn)行學(xué)習(xí),然后分類(lèi)。然后,我們可以在訓(xùn)練數(shù)據(jù)上面對(duì)我們的模型進(jìn)行測(cè)試。PS:因?yàn)槲覀儧](méi)有測(cè)試數(shù)據(jù)。

            
              
                print
              
              
                (
              
              f
              
                'Model Accuracy: {tree.score(X, y)}'
              
              
                )
              
              

Model Accuracy
              
                :
              
              
                1.0
              
            
          

我們看到它獲得了100%的準(zhǔn)確性,這也正是我們所期望的,因?yàn)槲覀兘o了它訓(xùn)練的數(shù)據(jù),并且沒(méi)有限制樹(shù)的深度。 事實(shí)證明,完全學(xué)習(xí)訓(xùn)練數(shù)據(jù)的能力可能是決策樹(shù)的缺點(diǎn),因?yàn)樗赡軙?huì)導(dǎo)致過(guò)度擬合,這一點(diǎn)我們稍后會(huì)討論。

可視化決策樹(shù)

那么,當(dāng)我們訓(xùn)練決策樹(shù)時(shí),實(shí)際上是在發(fā)生一些什么變化呢?我們找到一種可視化方法來(lái)理解決策樹(shù),我們可以通過(guò) scikit-learn 中的函數(shù),如下:

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋_第2張圖片

除了葉子節(jié)點(diǎn),所有節(jié)點(diǎn)都有五個(gè)部分:

  • 基于特征的查詢(xún),每個(gè)分裂節(jié)點(diǎn)都會(huì)給出真或者假的答案,根據(jù)答案,數(shù)據(jù)點(diǎn)向下移動(dòng)到樹(shù)上;
  • gini:節(jié)點(diǎn)的 gini 指數(shù)。當(dāng)我們向下移動(dòng)時(shí),平均加權(quán)的gini指數(shù)會(huì)減小;
  • samples:節(jié)點(diǎn)中的觀(guān)察數(shù);
  • value:每個(gè)類(lèi)中的樣本數(shù)。例如,頂部節(jié)點(diǎn)在類(lèi) 0 中有2個(gè)樣本,在類(lèi)1中有4個(gè)樣本;
  • class:節(jié)點(diǎn)中點(diǎn)的多數(shù)分類(lèi)。在葉子節(jié)點(diǎn)中,這就是對(duì)節(jié)點(diǎn)中所有樣本的預(yù)測(cè)了;

對(duì)于葉子節(jié)點(diǎn)的理解肯定沒(méi)有問(wèn)題,因?yàn)檫@些是最終預(yù)測(cè)的地方。要對(duì)新的數(shù)據(jù)點(diǎn)進(jìn)行分類(lèi),我們只需要將數(shù)據(jù)點(diǎn)進(jìn)行下移就行了,使用點(diǎn)的特征來(lái)回答問(wèn)題,直到到達(dá)類(lèi)是預(yù)測(cè)的葉節(jié)點(diǎn)。

為了以不同的方式查看樹(shù),我們可以在原始數(shù)據(jù)上繪制決策樹(shù)構(gòu)建的分割。

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋_第3張圖片

每個(gè)拆分就是一條線(xiàn),根據(jù)特征值將數(shù)據(jù)點(diǎn)劃分為節(jié)點(diǎn)。對(duì)于這個(gè)簡(jiǎn)單的問(wèn)題,我們并沒(méi)有對(duì)最大深度進(jìn)行限制,分區(qū)將節(jié)點(diǎn)中的每個(gè)點(diǎn)僅放置在同一類(lèi)的點(diǎn)上。稍后我們將看到訓(xùn)練數(shù)據(jù)的這種完美劃分可能不是我們想要的,因?yàn)樗赡軐?dǎo)致過(guò)度擬合。

gini 不純度

在這一節(jié)上,我們會(huì)深入了解基尼不純度的概念。節(jié)點(diǎn)的Gini不純度是指節(jié)點(diǎn)中隨機(jī)選擇的樣本如果被標(biāo)記錯(cuò)誤的概率,其實(shí)也就是節(jié)點(diǎn)中樣本的分布。例如,在頂部節(jié)點(diǎn)中,Gini不純度為 44.4% 。我們使用以下等式得出這個(gè)值:

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋_第4張圖片

節(jié)點(diǎn) n 的Gini不純度是 1 減去每個(gè)類(lèi)概率平方的總和。這個(gè)聽(tīng)起來(lái)可能會(huì)有點(diǎn)困惑,那么我們就以根節(jié)點(diǎn)來(lái)做一個(gè)例子:

在這里插入圖片描述

在每個(gè)節(jié)點(diǎn)處,決策樹(shù)在特征中進(jìn)行拆解,從而最大限度的減少GIni不純度。

然后,它以貪婪的遞歸過(guò)程重復(fù)此拆分過(guò)程,直到達(dá)到最大深度,或者每個(gè)節(jié)點(diǎn)僅包含來(lái)自一個(gè)類(lèi)的樣本。 每層樹(shù)木的加權(quán)總Gini不純度必須減少。 在樹(shù)的第二層,總加權(quán)基尼雜質(zhì)值為0.333:

在這里插入圖片描述

最終,最后一層的加權(quán)總 Gini 不純度變?yōu)?0 ,意味著每個(gè)節(jié)點(diǎn)都是純粹的,并且從該節(jié)點(diǎn)隨機(jī)選擇的點(diǎn)不會(huì)被錯(cuò)誤分類(lèi)。雖然這似乎是非常好的,但這意味著該模型可能過(guò)度擬合了,因?yàn)楣?jié)點(diǎn)僅適用訓(xùn)練數(shù)據(jù)構(gòu)建。

過(guò)度擬合:為什么森林比一棵樹(shù)好

您可能會(huì)想問(wèn)為什么不使用一個(gè)決策樹(shù)?它似乎是完美的分類(lèi)器,因?yàn)樗鼪](méi)有犯任何錯(cuò)誤!沒(méi)有分錯(cuò)一個(gè)數(shù)據(jù)。但要記住的關(guān)鍵點(diǎn)是這個(gè)樹(shù)是在訓(xùn)練數(shù)據(jù)上沒(méi)有犯錯(cuò)。機(jī)器學(xué)習(xí)模型的目標(biāo)是很好地概括它以前從未見(jiàn)過(guò)的新數(shù)據(jù)。

當(dāng)我們具有非常靈活的模型(模型具有高容量)時(shí),就會(huì)發(fā)生過(guò)度擬合,因?yàn)樗旧暇褪峭ㄟ^(guò)緊密擬合訓(xùn)練數(shù)據(jù)來(lái)生成模型的。問(wèn)題是模型不僅學(xué)習(xí)訓(xùn)練數(shù)據(jù)中的實(shí)際關(guān)系,還學(xué)習(xí)任何存在的噪聲。靈活模型具有高方差,因?yàn)閷W(xué)習(xí)參數(shù)(例如決策樹(shù)的結(jié)構(gòu))將隨著訓(xùn)練數(shù)據(jù)而顯著變化。

另一方面,一個(gè)不靈活的模型被認(rèn)為具有很高的偏差,因?yàn)樗鼘?duì)訓(xùn)練數(shù)據(jù)做出了假設(shè)(它偏向于預(yù)先設(shè)想的數(shù)據(jù)思想。)例如,線(xiàn)性分類(lèi)器假設(shè)數(shù)據(jù)是線(xiàn)性的,不具備適應(yīng)非線(xiàn)性關(guān)系的靈活性。一個(gè)不靈活的模型可能無(wú)法適應(yīng)訓(xùn)練數(shù)據(jù),在這兩種情況下,高方差和高偏差,那么模型無(wú)法很好地推廣到新數(shù)據(jù)。

當(dāng)我們不限制最大深度時(shí),決策樹(shù)非常容易過(guò)度擬合的原因是因?yàn)樗哂袩o(wú)限的靈活性,這意味著它可以保持無(wú)限增長(zhǎng),直到它一個(gè)葉節(jié)點(diǎn)只有一個(gè)類(lèi)別,完美地對(duì)所有這些進(jìn)行分類(lèi)。 如果您返回到?jīng)Q策樹(shù)的圖像并將最大深度限制為2(僅進(jìn)行一次拆分),則分類(lèi)不再100%正確。 我們減少了決策樹(shù)的方差,但代價(jià)是增加了偏差。

我們?yōu)榱讼拗茦?shù)的深度,我們可以將許多決策樹(shù)組合成稱(chēng)為隨機(jī)森林的單個(gè)集合模型。那么就會(huì)減少方差(好)并增加偏差(差)。

隨機(jī)森林

隨機(jī)森林是由許多決策樹(shù)組成的模型。 這個(gè)模型不是簡(jiǎn)單地平均樹(shù)的預(yù)測(cè)(我們可以稱(chēng)之為“森林”),而是使用兩個(gè)關(guān)鍵概念,使其名稱(chēng)為隨機(jī):

  • 在構(gòu)建樹(shù)時(shí)對(duì)訓(xùn)練數(shù)據(jù)點(diǎn)進(jìn)行隨機(jī)抽樣
  • 分割節(jié)點(diǎn)時(shí)考慮的隨機(jī)特征子集
隨機(jī)抽樣訓(xùn)練數(shù)據(jù)

在訓(xùn)練時(shí),隨機(jī)森林中的每棵樹(shù)都會(huì)從數(shù)據(jù)點(diǎn)的隨機(jī)樣本中學(xué)習(xí)。 樣本用替換采樣,稱(chēng)為自舉,這意味著一些樣本將在一棵樹(shù)中多次使用。 這個(gè)想法是通過(guò)對(duì)不同樣本的每棵樹(shù)進(jìn)行訓(xùn)練,盡管每棵樹(shù)相對(duì)于一組特定的訓(xùn)練數(shù)據(jù)可能具有很大的差異,但總體而言,整個(gè)森林的方差較小,但不會(huì)以增加偏差為代價(jià)。

在測(cè)試時(shí),通過(guò)平均每個(gè)決策樹(shù)的預(yù)測(cè)來(lái)進(jìn)行預(yù)測(cè)。 這種在不同的數(shù)據(jù)子集上訓(xùn)練每個(gè)學(xué)習(xí)器然后對(duì)預(yù)測(cè)求平均值的過(guò)程稱(chēng)為bagging,是 bootstrap aggregating的縮寫(xiě)。

用于拆分節(jié)點(diǎn)的隨機(jī)特征子集

隨機(jī)林中的另一個(gè)主要概念是,僅考慮所有特征的子集來(lái)分割每個(gè)決策樹(shù)中的每個(gè)節(jié)點(diǎn)。 通常,這被設(shè)置為sqrt(n_features)用于分類(lèi),這意味著如果有16個(gè)特征,則在每個(gè)樹(shù)中的每個(gè)節(jié)點(diǎn)處,將僅考慮4個(gè)隨機(jī)特征來(lái)分割節(jié)點(diǎn)。 (隨機(jī)林也可以考慮每個(gè)節(jié)點(diǎn)的所有特征,在回歸中比較常用。這些選項(xiàng)可以在Scikit-Learn Random Forest實(shí)現(xiàn)中控制)。

如果你能理解一個(gè)決策樹(shù),bagging的想法,以及隨機(jī)的特征子集,那么你對(duì)隨機(jī)森林的工作方式有了很好的理解:

隨機(jī)森林將數(shù)百或數(shù)千個(gè)決策樹(shù)組合在一起,在略微不同的訓(xùn)練集上訓(xùn)練每個(gè)決策樹(shù),考慮到有限數(shù)量的特征,在每棵樹(shù)中分割節(jié)點(diǎn)。 隨機(jī)森林的最終預(yù)測(cè)是通過(guò)平均每個(gè)樹(shù)的預(yù)測(cè)來(lái)做出的。

要理解為什么隨機(jī)森林優(yōu)于單一決策樹(shù)時(shí),請(qǐng)想象以下情況:您必須決定特斯拉股票是否會(huì)上漲,并且您可以訪(fǎng)問(wèn)十幾位對(duì)該公司沒(méi)有先驗(yàn)知識(shí)的分析師。每個(gè)分析師都有較低的偏差,因?yàn)樗麄儧](méi)有任何假設(shè),并且可以從新聞報(bào)道的數(shù)據(jù)集中學(xué)習(xí)。

這似乎是一個(gè)理想的情況,但問(wèn)題是報(bào)告除了真實(shí)信號(hào)之外可能還包含噪聲。因?yàn)榉治鰩熗耆鶕?jù)數(shù)據(jù)做出預(yù)測(cè) - 他們具有很高的靈活性 - 他們可能會(huì)被無(wú)關(guān)的信息所左右。分析師可能會(huì)從同一數(shù)據(jù)集中得出不同的預(yù)測(cè)。此外,如果給出不同的報(bào)告訓(xùn)練集,每個(gè)單獨(dú)的分析師都有很大的差異,并會(huì)提出截然不同的預(yù)測(cè)。

解決方案是不依賴(lài)于任何一個(gè)人,而是匯集每個(gè)分析師的投票分析結(jié)果。此外,與隨機(jī)森林一樣,允許每個(gè)分析人員僅訪(fǎng)問(wèn)報(bào)告的一部分,并希望通過(guò)采樣取消噪聲信息的影響。在現(xiàn)實(shí)生活中,我們依賴(lài)于多種來(lái)源(絕不相信亞馬遜的獨(dú)立評(píng)論),因此,決策樹(shù)不僅直觀(guān),而且在隨機(jī)森林中將它們組合在一起的想法也是如此。

隨機(jī)森林實(shí)踐

接下來(lái),我們將使用 Scikit-Learn 在 Python 中構(gòu)建一個(gè)隨機(jī)森林。 我們將使用分為訓(xùn)練和測(cè)試集的真實(shí)數(shù)據(jù)集,而不是學(xué)習(xí)一個(gè)簡(jiǎn)單的問(wèn)題。 我們使用測(cè)試集作為模型對(duì)新數(shù)據(jù)的執(zhí)行方式的估計(jì),這也可以讓我們確定模型過(guò)度擬合的程度。

數(shù)據(jù)集

我們要解決的問(wèn)題是二元分類(lèi)任務(wù),其目標(biāo)是預(yù)測(cè)個(gè)人的健康狀況。 這些特征是個(gè)人的社會(huì)經(jīng)濟(jì)和生活方式特征,健康狀況不佳的標(biāo)簽為0,健康狀況為1。 該數(shù)據(jù)集由疾病控制和預(yù)防中心收集,可在此處獲取(https://www.kaggle.com/cdc/behavioral-risk-factor-surveillance-system)。

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋_第5張圖片

通常,數(shù)據(jù)科學(xué)項(xiàng)目的80%的時(shí)間用于清理,探索和制作數(shù)據(jù)中的特征。 但是,對(duì)于本文,我們將直接使用建模。 這是一個(gè)不平衡的分類(lèi)問(wèn)題,因此準(zhǔn)確性不是一個(gè)合適的指標(biāo)。 相反,我們利用 ROC AUC進(jìn)行評(píng)估,從0(最差)到1(最佳)的度量,隨機(jī)猜測(cè)得分為0.5。 我們還可以繪制ROC曲線(xiàn)以評(píng)估模型。

接下來(lái)我們開(kāi)始學(xué)習(xí)隨機(jī)森林代碼,如下:

            
              
                from
              
               sklearn
              
                .
              
              ensemble 
              
                import
              
               RandomForestClassifier


              
                # Create the model with 100 trees
              
              
model 
              
                =
              
               RandomForestClassifier
              
                (
              
              n_estimators
              
                =
              
              
                100
              
              
                ,
              
               
                               bootstrap 
              
                =
              
              
                True
              
              
                ,
              
              
                               max_features 
              
                =
              
              
                'sqrt'
              
              
                )
              
              
                # Fit on training data
              
              
model
              
                .
              
              fit
              
                (
              
              train
              
                ,
              
               train_labels
              
                )
              
            
          

在訓(xùn)練幾分鐘后,模型準(zhǔn)備好對(duì)測(cè)試數(shù)據(jù)進(jìn)行如下預(yù)測(cè):

            
              
                # Actual class predictions
              
              
rf_predictions 
              
                =
              
               model
              
                .
              
              predict
              
                (
              
              test
              
                )
              
              
                # Probabilities for each class
              
              
rf_probs 
              
                =
              
               model
              
                .
              
              predict_proba
              
                (
              
              test
              
                )
              
              
                [
              
              
                :
              
              
                ,
              
              
                1
              
              
                ]
              
            
          

我們進(jìn)行類(lèi)別預(yù)測(cè)以及預(yù)測(cè)概率(predict_proba)來(lái)計(jì)算ROC AUC。 一旦我們有了測(cè)試預(yù)測(cè),我們就可以計(jì)算出ROC AUC。

            
              from sklearn.metrics import roc_auc_score

# Calculate roc auc
roc_value = roc_auc_score(test_labels, rf_probs)

            
          

結(jié)果

隨機(jī)森林的最終測(cè)試ROC AUC為0.87,而具有無(wú)限最大深度的單一決策樹(shù)的最終測(cè)試ROC AUC為0.67。 如果我們查看訓(xùn)練分?jǐn)?shù),兩個(gè)模型都達(dá)到了1.0 的 ROC AUC,這也是預(yù)期的,因?yàn)槲覀兘o這些模型提供了訓(xùn)練標(biāo)簽,并沒(méi)有限制每棵樹(shù)的最大深度。

雖然隨機(jī)森林過(guò)度擬合(在訓(xùn)練數(shù)據(jù)上比在測(cè)試數(shù)據(jù)上做得更好),但它能夠比單一決策樹(shù)更好地推廣測(cè)試數(shù)據(jù)。 隨機(jī)森林具有較低的方差(良好),同時(shí)保持決策樹(shù)的相同低偏差(也很好)。

我們還可以繪制單個(gè)決策樹(shù)(頂部)和隨機(jī)森林(底部)的ROC曲線(xiàn)。 頂部和左側(cè)的曲線(xiàn)是更好的模型:

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋_第6張圖片

上面是決策樹(shù)的 ROC

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋_第7張圖片

上圖是隨機(jī)森林的 ROC

我們可以采用模型的另一個(gè)評(píng)估方法,混淆矩陣:

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋_第8張圖片

這顯示模型在左上角和右下角正確的預(yù)測(cè)以及模型在左下角和右上角錯(cuò)誤的預(yù)測(cè)。 我們可以使用這些圖來(lái)診斷我們的模型,并確定它是否做得足夠好以投入生產(chǎn)。

特征重要性

隨機(jī)林中的特征重要性表示在該特征在拆分的所有節(jié)點(diǎn)上Gini不純度減少的總和。 我們可以使用這些來(lái)嘗試找出隨機(jī)森林認(rèn)為最重要的預(yù)測(cè)特征。 可以從訓(xùn)練好的隨機(jī)森林中提取重要的特征,并將其放入Pandas數(shù)據(jù)框中,如下所示:

            
              
                import
              
               pandas 
              
                as
              
               pd


              
                # Extract feature importances
              
              
fi 
              
                =
              
               pd
              
                .
              
              DataFrame
              
                (
              
              
                {
              
              
                'feature'
              
              
                :
              
              
                list
              
              
                (
              
              train
              
                .
              
              columns
              
                )
              
              
                ,
              
              
                'importance'
              
              
                :
              
               model
              
                .
              
              feature_importances_
              
                }
              
              
                )
              
              
                .
              
              \
                    sort_values
              
                (
              
              
                'importance'
              
              
                ,
              
               ascending 
              
                =
              
              
                False
              
              
                )
              
              
                # Display
              
              
fi
              
                .
              
              head
              
                (
              
              
                )
              
              

    feature	   importance
    DIFFWALK	   
              
                0.036200
              
              
    QLACTLM2	   
              
                0.030694
              
              
    EMPLOY1	   
              
                0.024156
              
              
    DIFFALON	   
              
                0.022699
              
              
    USEEQUIP	   
              
                0.016922
              
            
          

特征重要性告訴我們哪些特征在類(lèi)之間最具辨別力,可以讓我們深入了解問(wèn)題。 例如,這里指示患者是否行走困難的 DIFFWALK 特征是最具有意義的特征。

通過(guò)構(gòu)建最重要的特征分析,我們可以通過(guò)刪除低重要性的特征,使用高重要性的特征來(lái)進(jìn)行學(xué)習(xí)。

可視化隨機(jī)森林

最后,我們可以在森林中可視化單個(gè)決策樹(shù)。 這次,我們必須限制樹(shù)的深度,否則它將太大而無(wú)法轉(zhuǎn)換為圖像。 為了得到下圖,我將最大深度限制為6.這仍然導(dǎo)致我們無(wú)法完全解析大樹(shù)! 然而,鑒于我們深入研究決策樹(shù),我們掌握了模型的工作原理。

(四)Python中隨機(jī)森林的實(shí)現(xiàn)與解釋_第9張圖片


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美在线免费视频 | 欧美色操| 91视频精品 | 日本成人久久 | 国产69精品久久久久999三级 | 久久亚洲伊人中字综合精品 | 国自产拍在线天天更新2019 | 亚洲一区二区三区高清不卡 | 四虎4444hu4影视最新地址 | 超级乱淫视频播放日韩 | 久久九九精品一区二区 | 日韩一区二区三区四区 | 性久久久久 | 自拍第二页 | 久久久久久综合七次郎 | 欧美一区二区三区在线可观看 | 日韩国产欧美一区二区三区 | 亚洲一在线 | 日韩国产精品欧美一区二区 | 国产福利视频精品 | 国产欧美日韩精品一区二 | 一级片在线免费观看 | 亚洲精品www久久久久久久软件 | 欧洲亚洲一区 | 日本b站一卡二不卡 | 国产一区二区三区久久精品小说 | 国产免费成人在线视频 | 久久久久一区二区三区 | 九九免费精品视频 | 国产91福利在线精品剧情尤物 | 久久亚洲综合网 | 久热爱免费精品视频在线播放 | 免费 黄 色 人成 视频 | 欧美一级毛片一免费 | 国内精品一区视频在线播放 | 99视频在线免费看 | 一级片亚洲| 精品图区| 手机看片精品高清国产日韩 | 97在线碰碰观看免费高清 | 日本一级www乱码在线 |