Python大數據分析——決策樹和隨機森林

Python大數據分析——決策樹和隨機森林

  • 決策樹
  • 決策樹節點字段的選擇
    • 信息熵
      • 條件熵
      • 信息增益
      • 信息增益率
    • 基尼指數
      • 條件基尼指數
      • 基尼指數增益
    • 決策樹函數
  • 隨機森林
    • 函數

決策樹

圖中的決策樹呈現自頂向下的生長過程,深色的橢圓表示樹的根節點;淺色的橢圓表示樹的中間節點;方框則表示樹的葉節點。

對于所有的非葉節點來說,都是用來表示條件判斷,而葉節點則存儲最終的分類結果,例如中年分支下的葉節點(4,0)表示4位客戶購買,0位客戶不購買。
在這里插入圖片描述

決策樹節點字段的選擇

信息熵

我們首先了解下信息熵

熵原本是物理學中的一個定義,后來香農將其引申到了信息論領域,用來表示信息量的大小。信息量越大(分類越不“純凈”),對應的熵值就越大,反之亦然。也就是信息量大,熵大,一個事件發生的概率小,反之亦然。信息熵的計算公式如下:
在這里插入圖片描述
在實際應用中,會將概率p的值用經驗概率替換,所以經驗信息可以表示為:
在這里插入圖片描述
舉個例子:以產品是否被購買為例,假設數據集一共包含14個樣本,其中購買的用戶有9個,沒有購買的用戶有5個,所以對于是否購買這個事件來說,它的經驗信息為:
在這里插入圖片描述

條件熵

判斷在某個條件下的信息熵為條件熵
在這里插入圖片描述
在這里插入圖片描述
比如:
在這里插入圖片描述

信息增益

對于已知的事件A來說,事件D的信息增益就是D的信息熵與A事件下D的條件熵之差,事件A對事件D的影響越大,條件熵H(D|A)就會越小(在事件A的影響下,事件D被劃分得越“純凈”),體現在信息增益上就是差值越大,進而說明事件D的信息熵下降得越多。
所以,在根節點或中間節點的變量選擇過程中,就是挑選出各自變量下因變量的信息增益最大的。
在這里插入圖片描述
其中:D是事件Y的所有可能

信息增益率

決策樹中的ID3算法使用信息增益指標實現根節點或中間節點的字段選擇,但是該指標存在一個非常明顯的缺點,即信息增益會偏向于取值較多的字段。
為了克服信息增益指標的缺點,提出了信息增益率的概念,"它的思想很簡單,就是在信息增益的基礎上進行相應的懲罰。信息增益率的公式可以表示為:
在這里插入圖片描述
其中,HA為事件A的信息熵。事件A的取值越多,GainA(D)可能越大,但同時HA也會越大,這樣以商的形式就實現了GainA(D)的懲罰。

基尼指數

決策樹中的C4.5算法使用信息增益率指標實現根節點或中間節點的字段選擇,但該算法與ID3算法致,都只能針對離散型因變量進行分類,對于連續型的因變量就顯得束手無策了。
為了能夠讓決策樹預測連續型的因變量,Breiman等人在1984年提出了CART算法,該算法也稱為分類回歸樹,它所使用的字段選擇指標是基尼指數。
在這里插入圖片描述

條件基尼指數

在這里插入圖片描述

基尼指數增益

與信息增益類似,還需要考慮自變量對因變量的影響程度,即因變量的基尼指數下降速度的快慢,下降得越快,自變量對因變量的影響就越強。下降速度的快慢可用下方式子衡量:
在這里插入圖片描述

決策樹函數

DecisionTreeClassifier(criterion=‘gini’, splitter=‘best’,max_depth=None,min_samples split=2,min_samples_leaf=1,max_leaf_nodes=None,class_weight=None)
criterion: 用于指定選擇節點字段的評價指標,對于分類決策樹,默認為’gini’,表示采用基尼指數選擇節點的最佳分割字段;對于回歸決策樹,默認為’mse’,表示使用均方誤差選擇節點的最佳分割字段
splitter: 用于指定節點中的分割點選擇方法,默認為’best’,表示從所有的分割點中選擇最佳分割點如果指定為’random’,則表示隨機選擇分割點
max_depth: 用于指定決策樹的最大深度,默認為None,表示樹的生長過程中對深度不做任何限制
min_samples split: 用于指定根節點或中間節點能夠繼續分割的最小樣本量, 默認為2
min_samples leaf: 用于指定葉節點的最小樣本量,默認為1
max_leaf nodes:用于指定最大的葉節點個數,默認為None,表示對葉節點個數不做任何限制
class_weight:用于指定因變量中類別之間的權重,默認為None,表示每個類別的權重都相等;如果,則表示類別權重與原始樣本中類別的比例成反比;還可以通過字典傳遞類別之間的權重為balanced差異,其形式為{class label:weight}

隨機森林

利用Bootstrap抽樣法,從原始數據集中生成k個數據集,并且每個數據集都含有N個觀測和P個自變量。
針對每一個數據集,構造一棵CART決策樹,在構建子樹的過程中,并沒有將所有自變量用作節點字段的選擇,而是隨機選擇p個字段。
讓每一棵決策樹盡可能地充分生長,使得樹中的每個節點盡可能“純凈”,即隨機森林中的每一棵子樹都不需要剪枝。
針對k棵CART樹的隨機森林,對分類問題利用投票法,將最高得票的類別用于最終的判斷結果;對回歸問題利用均值法,將其用作預測樣本的最終結果。
在這里插入圖片描述
生成100個樹,每個數據集為一個樹

函數

RandomForestClassifier(n_estimators=10,criterion=‘gini’, max_depth=None,min_samples_split=2, min_samples_leaf=1,max_leaf_nodes=None, bootstrap=True, class_weight=None)
n_estimators: 用于指定隨機森林所包含的決策樹個數
criterion: 用于指定每棵決策樹節點的分割字段所使用的度量標準,用于分類的隨機森林,默認的criterion值為’gini’;用于回歸的隨機森林,默認的criterion值為’mse’
max_depth: 用于指定每棵決策樹的最大深度,默認不限制樹的生長深度
min _samples_split: 用于指定每棵決策樹根節點或中間節點能夠繼續分割的最小樣本量, 默認為2

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43837.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java項目:基于SSM框架實現的農家樂信息管理平臺含前后臺【ssm+B/S架構+源碼+數據庫+答辯PPT+開題報告+畢業論文】

一、項目簡介 本項目是一套基于SSM框架實現的農家樂信息管理平臺 包含:項目源碼、數據庫腳本等,該項目附帶全部源碼可作為畢設使用。 項目都經過嚴格調試,eclipse或者idea 確保可以運行! 該系統功能完善、界面美觀、操作簡單、功…

招投標信息采集系統:讓您的企業始終站在行業前沿

一、為何招投標信息如此關鍵? 在經濟全球化的大背景下,招投標活動日益頻繁,成為企業獲取項目、拓展市場的主流方式之一。招投標信息采集,作為企業戰略決策的前置環節,其重要性不言而喻。它不僅關乎企業能否第一時間發…

WPF 初識依賴屬性

依賴屬性的意義和作用 核心模塊內存共享,節省空間數據綁定、樣式、模板、動畫。。。。如果沒有依賴屬性,這個框架就是一個控件框架 相當于Winform 依賴屬性的基本定義 基本過程:聲明、注冊、包裝 在需要寫依賴屬性的類中,繼承…

快速將一個網址打包成一個exe可執行文件

一、電腦需要node環境 如果沒有下面有安裝教程: node.js安裝及環境配置超詳細教程【Windows系統安裝包方式】 https://blog.csdn.net/weixin_44893902/article/details/121788104 我的版本是v16.13.1 二、安裝nativefier 這是一個GitHub上的開源項目&#xff1a…

C 語言函數

1.0 函數的創建和使用 在C語言中,函數是一種封裝了特定功能的代碼塊,可以被程序中的其他部分調用。函數可以接受輸入參數,并且可以返回一個值。定義一個函數的基本語法如下 #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" …

numpy、ffmpeg都在cpu上面跑

ffmpeg: ffmpeg不支持在GPU上運行。ffmpeg是一個用于處理多媒體數據的工具,它主要在CPU上運行。雖然某些特定的ffmpeg功能(如某些視頻編解碼器)可以利用GPU進行硬件加速,但這需要特定的硬件和驅動支持,并且并非所有操…

阿里云人工智能平臺PAI部署開源大模型chatglm3之失敗記錄--update:最后成功了!

想學習怎么部署大模型,跟著網上的帖子部署了一個星期,然而沒有成功。失敗的經歷也是經歷,記在這里。 我一共創建了3個實例來部署chatglm3,每個實例都是基于V100創建的(當時沒有A10可選了),其顯…

算法工程師第六天(● 454.四數相加II ● 383. 贖金信 ● 15. 三數之和 ● 18. 四數之和 ● 總結 )

參考文獻 代碼隨想錄 一、四數相加 II 給你四個整數數組 nums1、nums2、nums3 和 nums4 &#xff0c;數組長度都是 n &#xff0c;請你計算有多少個元組 (i, j, k, l) 能滿足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#…

x86芯片定制,Ethercat芯片定制,IP服務,適用于運動控制,工業總線等軟硬一體機

x86芯片定制&#xff0c;Ethercat芯片定制 X86平臺 我們的研發工程師已經積累了非常豐富的主板、整機設計經驗&#xff0c;對接您的產品規格場景需求&#xff0c;快速交付樣機&#xff0c;包含主板、BOX整機、平板電腦、CPCI等形態產品。降本、長生命周期、快速交付、及時響應…

C# 如何防止反編譯?C#程序加密混淆保護方法大全

在C#開發中&#xff0c;由于.NET程序集&#xff08;assemblies&#xff09;是基于中間語言&#xff08;Intermediate Language, IL&#xff09;編譯的&#xff0c;這些程序集可以被反編譯回接近原始源代碼的形式。為了保護代碼不被輕易反編譯&#xff0c;開發者可以采取以下幾種…

springsecurity(學習自用)

springsecurity 學習資源&#xff1a; https://blog.csdn.net/qq_45525848/article/details/131142179 springbootspring security 認證&#xff1a; 判斷用戶是否是系統合法用戶過程授權: 判斷系統內用戶可以訪問或具有訪問那些資源權限過程 創建一個springboot項目 如果只…

IEC62056標準體系簡介-2.IEC62056標準體系及對象標識系統(OBIS)

1. IEC 62056標準體系 IEC 62056標準體系目前共包括六部分&#xff0c;見圖1&#xff1a; 第61部分&#xff1a;對象標識系統第62部分&#xff1a;接口類第53部分&#xff1a;COSEM應用層第46部分&#xff1a;使用HDLC&#xff08;High Level Data Link Control&#xff09;協…

Linux多進程和多線程(八)多線程

多線程 線程定義線程與進程線程資源 線程相關命令 pidstat 命令 top 命令ps 命令常見的并發方案 1. 多進程模式2. 多線程模式 創建線程 1. pthread_create() 示例:創建一個線程 2. pthread_exit() 退出線程3. pthread_join() 等待線程結束 示例: 線程分離 創建多個線程 示例 1:…

前端面試題35(在iOS和Android平臺上,實現WebSocket協議有哪些常見的庫或框架?)

在iOS和Android平臺上&#xff0c;實現WebSocket協議有許多成熟且被廣泛使用的庫和框架。下面是一些推薦的選項&#xff1a; iOS 平臺 SocketRocket 簡介&#xff1a;這是由Facebook開源的庫&#xff0c;專門為iOS和Mac OS X設計&#xff0c;提供WebSocket連接的功能。它基于S…

Blender新手入門筆記收容所(一)

基礎篇 基礎操作 視角的控制 控制觀察視角&#xff1a;鼠標中鍵平移視圖&#xff1a;Shift鼠標中鍵縮放視圖&#xff1a;滾動鼠標中鍵滾輪 選中物體后&#xff1a;移動物體快捷鍵G&#xff0c;移動后單擊鼠標就會定下來。 進入移動狀態后&#xff1a;按Y會沿著Y軸移動進入移動…

LY/T 3359-2023 耐化學腐蝕高壓裝飾層積板檢測

耐化學腐蝕高壓裝飾層積板是指用酚醛樹脂浸漬的層狀植物纖維材料為基材&#xff0c;與涂布以丙烯酸樹脂為主體的裝飾紙的飾面層&#xff0c;在高溫高壓下層積壓制而成的具有化學腐蝕功能的高壓裝飾層積板。 LY/T 3359-2023 耐化學腐蝕高壓裝飾層積板檢測項目&#xff1a; 測試…

HW期間——應急響應

01HW中應急響應的流程 001應急響應所處位置&#xff08;應急處置組&#xff09; 監控研判組發現的一些安全時間提供給應急處置組&#xff0c;應急處置組通過上機取證把線索給到溯源反制組。但是溯源反制組可能已經沒有了&#xff0c;有些單位有&#xff0c;有些單位取消了。有…

Python神經模型評估微分方程圖算法

&#x1f3af;要點 &#x1f3af;神經網絡映射關聯圖 | &#x1f3af;執行時間分析 | &#x1f3af;神經網絡結構降維 | &#x1f3af;量化圖結構邊作用 | &#x1f3af;數學評估算法實現 &#x1f36a;語言內容分比 &#x1f347;Python隨機梯度下降算法 隨機梯度下降是梯度…

matlab仿真 通信信號和系統分析(下)

&#xff08;內容源自詳解MATLAB&#xff0f;SIMULINK 通信系統建模與仿真 劉學勇編著第三章內容&#xff0c;有興趣的讀者請閱讀原書&#xff09; 一、離散傅里葉變換 clear all n0:30;%信號的時間范圍 xsin(0.2*n).*exp(-0.1*n); k0:30;%頻率范圍 N31; Wnkexp(-j*2*pi/N).…

解決本地操作云服務器上的Redis

方案一&#xff1a;開放Redis默認端口&#xff0c;本地通過公網IP端口號的形式訪問。 方案二&#xff1a;每次將本地編寫好的Java代碼打包&#xff0c;放在云服務器上運行。 方案三&#xff1a;配置ssh端口轉發&#xff0c;把云服務器的redis端口&#xff0c;映射到本地主機。 …