日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一个完整决策树的构建案例

發布時間:2023/12/29 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个完整决策树的构建案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
"""數據樣本展示:#x1,x2,x3, Y是,單身,125,否否,已婚,100,否否,單身,100,否是,已婚,110,否是,離婚,60,否否,離婚,95,是否,單身,85,是否,已婚,75,否否,單身,90,是是,離婚,220,否 """ import numpy as np import pandas as pddef entropy(p):"""信息熵的計算公式:param p::return:"""return np.sum([-t * np.log2(t) for t in p])def gini(p):"""Gini系數的計算公式:param p::return:"""return 1-np.sum([t * t for t in p])def error(p):"""錯誤率de公式:param p::return:"""return 1-np.max(p)def h(p):"""決策樹中對節點純度的衡量:param p::return:"""return entropy(p)# return gini(p)# return error(p) """找分割點,若先計算x3的信息增益;x3的概率占比:要設置分屆閾值,因為它是連續特征以年收入97.5作為x3的劃分值 """ # 第一步:先計算標簽Y概率占比:7個是,3個否 h0 = h([0.7, 0.3]) # 第二步:找分割點,若計算x3的信息增益;x3的概率占比:要設置分屆閾值,因為它是連續特征:假設>97.5,<=97.5 # <=97.5: x3的左子樹:2個否,3個是 p31_2 = 0.5 h31_2 = h([2.0/5, 3.0/5]) # >97.5: x3的右子樹:都是否 p32_2 = 0.5 h32_2 = h([1.0]) # x3的信息增益度:h3_2 = p31_2 * h31_2 + p32_2 * h32_2; g3_2 = h0 - h3_2 h3_2 = p31_2 * h31_2 + p32_2 * h32_2 g3_2 = h0 - h3_2 print("=" * 100) print('以年收入97.5作為劃分特征的時候,信息增益為:{}'.format(g3_2)) # 以年收入97.5作為劃分特征的時候,信息增益為:0.3958156020033584 print('\n') print('根據信息增益率大的列屬性作為構建決策樹的起始分割點')# 根據初步分割點計算每個分割點的信息熵,得出以x3左子樹為分割點作為第2層根節點; h0_2 = h31_2 # 根節點的信息熵 # 針對于左子樹繼續劃分找分割點,若先計算x2的信息增益;x2的概率占比:4個單身,3個已婚,3個離婚 # 第二步:找第二層的分割節點,若先計算x2的信息增益;x2的概率占比:4個單身,3個已婚,3個離婚 # x2的左子樹:2個單身: 都是----是 p21 = 0.4 h21 = h([1.0]) # x2的中子樹,1個已婚: 是 p22 = 0.3 h22 = h([1.0]) # x2的右子樹,小于97.5且離婚的樣本數目:1個是,1個否 p23 = 0.3 h23 = h([0.5, 0.5]) # x2的信息增益度:h2 = p21 * h21 + p22 * h22 + p23 * h23, g2 = h0 - h2 h2 = p21 * h21 + p22 * h22 + p23 * h23 g2 = h0_2 - h2 print("=" * 100) print('以x2在x3條件下作為子樹分割點的信息增益率:{}'.format(g2))# 第3步:找第3層的分割節點,若計算x1的信息增益;x1的概率占比:4個有房產,6個無房產 # 第3層根節點的信息熵是:x2的右子樹,小于97.5且離婚的樣本信息熵 h0_3 = h23 # x1的左子樹; x1的概率占比:4個有房產 p31 = 0.4 # (前提條件:小于等于97.5且已離婚的樣本劃分)且有房產:1個 h31 = h([1.0]) # x1的右子樹,(前提條件:小于等于97.5且已離婚的樣本劃分)且無房產:1個 p32 = 0.6 h32 = h([1.0]) # x1(在x2,x3條件下)的信息增益度:h3 = p31 * h31 + p32 * h32, g2 = h0 - h2 h3 = p31 * h31 + p32 * h32 g3 = h0_3 - h3 print("=" * 100) print('以x1在x2,x3條件下作為子樹分割點的信息增益率:{}'.format(g3))

E:\myprogram\anaconda\python.exe E:/XX/機器學習課程/決策樹操作/genral.py
--------------------------------------------決策樹常用判定方式和構建決策樹步驟----------------------------------
=========================================================================
以年收入97.5作為劃分特征的時候,信息增益為:0.3958156020033584


根據信息增益率大的列屬性作為構建決策樹的起始分割點
=========================================================================
以x2在x3條件下作為子樹分割點的信息增益率:0.6709505944546685
=========================================================================
以x1在x2,x3條件下作為子樹分割點的信息增益率:1.0

總結

以上是生活随笔為你收集整理的一个完整决策树的构建案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。