決策樹最優屬性選擇



本文以西瓜數據集為例演示決策樹使用信息增益選擇最優劃分屬性的過程

在這里插入圖片描述

西瓜數據集下載:傳送門

首先計算根節點的信息熵:

  • 數據集分為好瓜、壞瓜,所以|y|=2
  • 根結點包含17個訓練樣例,其中好瓜共計8個樣例,所占比例為8/17
  • 壞瓜共計9個樣例,所占比例為9/17

將數據帶入信息熵公式,即可得到根結點的信息熵:

E n t ( D ) = ? ( 8 17 log ? 2 8 17 + 9 17 log ? 2 9 17 ) = 0.998 Ent(D)=-\left( \frac{8}{17}\log_2\frac{8}{17}+\frac{9}{17}\log_2\frac{9}{17} \right) =0.998 Ent(D)=?(178?log2?178?+179?log2?179?)=0.998

以屬性色澤為例,其對應3個數據子集:

  • D1(色澤=青綠),包含{1,4,6,10,13,17}共6個樣例,其中好瓜樣例為{1,4,6},比例為3/6,壞瓜樣例為{10,13,17},比例為3/6。將數據帶入信息熵計算公式即可得到該結點的信息熵:1.000
  • D2(色澤=烏黑),包含{2,3,7,8,9,15}共6個樣例,其中好瓜樣例為{2,3,7,8},比例為4/6,壞瓜樣例為{9,15},比例為2/6。將數據帶入信息熵計算公式即可得到該結點的信息熵:0.918
  • D1(色澤=淺白),包含{5,11,12,14,16}共5個樣例,其中好瓜樣例為{5},比例為1/5,壞瓜樣例為{11,12,14,16},比例為4/5。將數據帶入信息熵計算公式即可得到該結點的信息熵:0.722

則計算色澤屬性的信息增益為:

G a i n ( D , 色澤 ) = E n t ( D ) ? ∑ v = 1 3 ∣ D v ∣ ∣ D ∣ E n t ( D ) = 0.998 ? ( 6 17 ? 1.000 + 6 17 ? 0.918 + 5 17 ? 0.722 ) = 0.109 Gain(D,色澤)=Ent(D)-\sum_{v=1}^{3}\frac{|D^v|}{|D|}Ent(D) \\ =0.998-\left( \frac{6}{17} * 1.000+\frac{6}{17}*0.918+\frac{5}{17}*0.722 \right) =0.109 Gain(D,色澤)=Ent(D)?v=13?DDv?Ent(D)=0.998?(176??1.000+176??0.918+175??0.722)=0.109

同樣的方法,計算其他屬性的信息增益為:
G a i n ( D , 根蒂 ) = 0.143 G a i n ( D , 敲聲 ) = 0.141 G a i n ( D , 紋理 ) = 0.381 G a i n ( D , 臍部 ) = 0.289 G a i n ( D , 觸感 ) = 0.006 Gain(D,根蒂)=0.143 \\ Gain(D,敲聲)=0.141 \\ Gain(D,紋理)=0.381 \\ Gain(D,臍部)=0.289 \\ Gain(D,觸感)=0.006 \\ Gain(D,根蒂)=0.143Gain(D,敲聲)=0.141Gain(D,紋理)=0.381Gain(D,臍部)=0.289Gain(D,觸感)=0.006

對比不同屬性,我們發現紋理屬性的信息增益最大,因此,紋理屬性被選為劃分屬性:清晰{1,2,3,4,5,6,8,10,15}、稍糊{7,9,13,14,17}、模糊{11,12,16}

下一步,我們再看紋理=清晰的節點分支,該節點包含的樣例集合D1中有編號為{1,2,3,4,5,6,8,10,15}共計9個樣例,此時可用屬性集合為{色澤,根蒂,敲聲,臍部,觸感},紋理不會再作為劃分屬性,我們以同樣的方式再計算各屬性的信息增益為:

G a i n ( D , 色澤 ) = 0.043 G a i n ( D , 根蒂 ) = 0.458 G a i n ( D , 敲聲 ) = 0.331 G a i n ( D , 臍部 ) = 0.458 G a i n ( D , 觸感 ) = 0.458 Gain(D,色澤)=0.043 \\ Gain(D,根蒂)=0.458 \\ Gain(D,敲聲)=0.331 \\ Gain(D,臍部)=0.458 \\ Gain(D,觸感)=0.458 \\ Gain(D,色澤)=0.043Gain(D,根蒂)=0.458Gain(D,敲聲)=0.331Gain(D,臍部)=0.458Gain(D,觸感)=0.458

從上圖可以看出根蒂、臍部、觸感3個屬性均取得了最大的信息增益,此時可任選其一作為劃分屬性。同理,對每個分支結點進行類似操作,即可得到最終的決策樹


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

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

相關文章

2024-5-4-從0到1手寫配置中心Config之基于h2的config-server

添加依賴 新建的web工程中添加h2的依賴 添加h2的配置 設置數據源和密碼設置初始化sql語句打開h2的控制臺 初始化語句創建一個config表,保存服務配置信息。 完成CRUD接口 controller類 mapper接口 測試 在web控制臺可以看到sql已經初始化完成,crud接口…

前端基礎入門三大核心之HTML篇:深入解析PNG8、PNG16、PNG24與PNG32的差異及網頁應用指南

前端基礎入門三大核心之HTML篇:深入解析PNG8、PNG16、PNG24與PNG32的差異及網頁應用指南 基礎概念與作用說明PNG8PNG16PNG24PNG32 代碼示例與使用場景PNG8示例PNG24示例PNG32示例 性能優化與最佳實踐防范漏洞提示結語與討論 在網頁設計與前端開發中,選擇…

PLC工程師按這個等級劃分是否靠譜?

在工業自動化領域,PLC工程師扮演著至關重要的角色,他們負責構建、維護自動化系統,推動工業4.0進程的發展。成為一名優秀的PLC工程師需要經歷不同境界的發展階段,每個階段都對應著不同的技能要求和責任。以下是PLC工程師的六種級別…

Kotlin協程在android中的使用總結

認識協程 引用官方的一段話 協程通過將復雜性放入庫來簡化異步編程。程序的邏輯可以在協程中順序地表達,而底層庫會為我們解決其異步性。該庫可以將用戶代碼的相關部分包裝為回調、訂閱相關事件、在不同線程(甚至不同機器!)上調度…

JDK、JRE、編譯指令和垃圾回收機制詳解

JDK 全稱 Java SE Development Kit (Java 開發工具包) JVM虛擬機:Java運行的地方 核心類庫:Java提前編好的東西 開發工具: javac,java,jdb,jhat javac:Java編譯器,用于將Java源代碼編譯成Java字節碼文件(.class)。 java: java…

[STM32-HAL庫]AS608-指紋識別模塊-STM32CUBEMX開發-HAL庫開發系列-主控STM32F103C8T6

目錄 一、前言 二、詳細步驟 1.光學指紋模塊 2.配置STM32CUBEMX 3.程序設計 3.1 輸出重定向 3.2 導入AS608庫 3.3 更改端口宏定義 3.4 添加中斷處理部分 3.5 初始化AS608 3.6 函數總覽 3.7 錄入指紋 3.8 驗證指紋 3.9 刪除指紋 3.10 清空指紋庫 三、總結及資源 一、前言 …

[力扣題解] 797. 所有可能的路徑

題目&#xff1a;797. 所有可能的路徑 思路 深度搜索 代碼 // 圖論哦!class Solution { private:vector<vector<int>> result;vector<int> path;// x : 當前節點void function(vector<vector<int>>& graph, int x){int i;// cout <&l…

解決鼠標滾動時element-ui日期選擇器錯位的問題

解決方案&#xff1a;監聽鼠標滾動事件&#xff0c;在鼠標滾動時隱藏element-ui日期選擇器下拉框 1、先在util文件夾下創建個hidePicker.js文件&#xff0c;代碼如下&#xff1a; let el nullconst fakeClickOutSide () > {const SELECTWRAP_BODY document.body // bod…

Day37 貪心算法part04

LC860檸檬水找零(未掌握) 未掌握分析&#xff1a;20的時候找零卡住&#xff0c;同時貪心思路就想了很久 當bill[i]20的時候&#xff0c;我們有兩種找零范式&#xff0c;找零10、5和找零三個5&#xff0c;優先找零10、5&#xff0c;因為三個5是可以替代10、5的情況的&#xff0…

Nebula街機模擬器 Mac移植版(400+游戲roms)漢化版

nebula星云模擬器是電腦上最熱門的街機游戲模擬器之一&#xff0c;玩家可以通過這個小巧的模擬器軟件進行多款經典街機游戲啟動和暢玩&#xff0c;本次移植的包含400多款游戲roms&#xff0c;經典的三國志、三國戰紀、拳皇、街霸、合金彈頭、1941都包含在內。 下載地址&#xf…

CompletableFuture的主要用途是什么?

CompletableFuture 的主要用途是為復雜的異步編程模型提供一種更簡單&#xff0c;更具可讀性的方式。它主要用于以下幾個方面&#xff1a; 非阻塞計算&#xff1a;CompletableFuture 為處理高延遲的計算任務提供了非阻塞的解決方案。你可以啟動一個計算任務&#xff0c;而不需要…

前端 CSS 經典:好看的標題動畫

前言&#xff1a;好看的標題動畫實現。 效果&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><…

YOLOv5 AssertionError: “XXX” acceptable suffix is [‘.pt‘]

使用終端訓練YOLOv5模型報錯&#xff0c;原命令為&#xff1a; “python train.py --img 640 --batch 1 --epochs 25 --data "C:\Users\GRT\PycharmProjects\yolov5-7.0\animal_training\dataset.yaml " --weights “C:\Users\GRT\PycharmProjects\yolov5-7.0\MyFunc…

組播協議簡介

一、組播協議介紹 組播協議是一種網絡通信協議&#xff0c;它允許一個發送者同時向多個接收者發送數據。以下是組播協議的一些特點&#xff1a; 高效性&#xff1a;組播協議可以有效地利用網絡帶寬&#xff0c;因為它只需要發送一份數據副本&#xff0c;就可以被多個接收者同…

藍橋樓賽第30期-Python-第三天賽題 從參數中提取信息題解

樓賽 第30期 Python 模塊大比拼 提取用戶輸入信息 介紹 正則表達式&#xff08;英文為 Regular Expression&#xff0c;常簡寫為regex、regexp 或 RE&#xff09;&#xff0c;也叫規則表達式、正規表達式&#xff0c;是計算機科學的一個概念。 所謂“正則”&#xff0c;可以…

docker swarm多主機之間的端口無法訪問,但能ping通 問題排查及解決

已排查&#xff1a;1.ufw status 防火墻已關閉 2.selinux已關閉 3.netstat -ntpl :::8088 未限制ip 問題&#xff1a;docker swarm多主機之間的端口無法訪問&#xff0c;但能ping通&#xff0c;同一主機下的端口也可以訪問。 原因&#xff1a;docker overlay網絡內部使用…

【Linux取經路】初識線程——線程控制

文章目錄 一、什么是線程&#xff1f;1.1 Linux 中線程該如何理解&#xff1f;1.2 如何理解把資源分配給線程&#xff1f;1.2.1 虛擬地址到物理地址的轉換 1.3 線程 VS 進程1.3.1 線程為什么比進程更輕量化&#xff1f;1.3.2 線程的優點1.3.3 線程缺點1.3.4 線程異常1.3.5 線程…

關于基礎的流量分析(1)

1.對于流量分析基本認識 1&#xff09;簡介&#xff1a;網絡流量分析是指捕捉網絡中流動的數據包&#xff0c;并通過查看包內部數據以及進行相關的協議、流量分析、統計等來發現網絡運行過程中出現的問題。 2&#xff09;在我們平時的考核和CTF比賽中&#xff0c;基本每次都有…

MySQL用戶管理操作

用戶權限管理操作 DCL語句 一.用戶管理操作 MySQL軟件內部完整的用戶格式&#xff1a; 用戶名客戶端地址 admin1.1.1.1這個用戶只能從1.1.1.1的客服端來連接服務器 admin1.1.1.2這個用戶只能從1.1.1.2的客服端來連接服務器 rootlocal host這個用戶只能從服務器本地進行連…

Prompt - 流行的10個框架

轉載自&#xff1a;https://juejin.cn/post/7287412759050289212 文章目錄 1、ICIO框架2、CRISPE框架3、BROKE框架4、CREATE框架5、TAG框架6、RTF框架7、ROSES框架8、APE框架9、RACE框架10、TRACE框架 測試用例 為了看到不同的Prompt框架效果&#xff0c;本文定義一個統一的測…