一个完整决策树的构建案例
生活随笔
收集整理的這篇文章主要介紹了
一个完整决策树的构建案例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
"""數據樣本展示:#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
總結
以上是生活随笔為你收集整理的一个完整决策树的构建案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ipixsoft swf to html
- 下一篇: 计算机圣诞节教案,幼儿园小班圣诞节教案