R语言决策树(ID3)

 数据来源自《数据挖掘:方法与应用》

 导入Rstudio中:

library(tidyverse)
df = readxl::read_xlsx("datas/student.xlsx")

 * 将Age中的<=30、31-40,>40记作1、2、3

ID3算法:

离散型随机变量 𝑋 的概率分布为 𝑃(𝑋 = 𝑥 𝑖 ) = 𝑝 𝑖 , 𝑖 = 1, ⋯ , 𝑛 , 则其 定义为:

I(s_1,s_2,...,s_n)=-\Sigma_{i=1}^{m}p_ilog_2 p_i

calEntropy = function(Y) { # 计算因变量 Y 分组下的经验熵
  p = table(Y) / length(Y)
  - sum(p * log2(p))
}

属性A的信息熵定义为:

E(A)=\Sigma_{i=1}^n \frac{|D_i|}{D}I

calCondEntropy = function(A, Y) {
  p = table(A) / length(A)
  H = tapply(Y, A, calEntropy)
  sum(p * H)
}
# 计算各个特征对结果变量 Y 的信息熵
HDA = map_dbl(df[2:5], calCondEntropy, Y = df$buys_computer)
HDA

输出如下:

age             income       student    credit_rating 
0.6935361     0.9110634     0.7884505     0.8921589 

 课本给出的参考结果如下:

 计算信息增益:

Gain(A)=I(A)-E(A)

> gDA = HD - HDA
> gDA
          age        income       student credit_rating 
   0.24674982    0.02922257    0.15183550    0.04812703 

课本参考值:

参考资料: [1] 张敬信.2021.R机器学习课件

[2]徐华.数据挖掘:方法与应用.清华大学出版社.2014

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小邢不会JAVA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值