AAA教育论坛

 找回密码
 立即注册
查看: 9586|回复: 0
打印 上一主题 下一主题

R语言实现C4.5计算步骤

[复制链接]

12

主题

13

帖子

24

积分

贵宾

积分
24
跳转到指定楼层
楼主
发表于 2018-2-28 13:10:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#数据集的信息熵
dataAll<- -(length(t[t$拖欠贷款因变量=="否",1])/nrow(t)*log2(length(t[t$拖欠贷款因变量=="否",1])/nrow(t))+
              length(t[t$拖欠贷款因变量=="是",1])/nrow(t)*log2(length(t[t$拖欠贷款因变量=="是",1])/nrow(t)))


#分类型信息熵
fenlei<-function(leihao,leizhi)
{
   zhanbi<-length(t[t[,leihao]==leizhi,2])/10
   shi<-length(t[t[,leihao]==leizhi & t$拖欠贷款因变量=="是" ,2])/length(t[t[,leihao]==leizhi,2])
   if(shi!=0)
   {
     shi<-shi* log2(shi)
   }
   fou<-length(t[t[,leihao]==leizhi & t$拖欠贷款因变量=="否" ,2])/length(t[t[,leihao]==leizhi,2])
   if(fou!=0)
   {
     fou<-fou* log2(fou)
   }
   zhanbi*-(shi+fou)
}
#数值型信息熵
shuzhi<-function(leizhi)
{
  leihao<-3
  zhanbi<-length(t[t[,leihao]>leizhi,2])/10
  shi<-length(t[t[,leihao]>leizhi & t$拖欠贷款因变量=="是" ,2])/length(t[t[,leihao]>leizhi,2])
  if(shi!=0)
  {
    shi<-shi* log2(shi)
  }
  fou<-length(t[t[,leihao]>leizhi & t$拖欠贷款因变量=="否" ,2])/length(t[t[,leihao]>leizhi,2])
  if(fou!=0)
  {
    fou<-fou* log2(fou)
  }
  xiaohyu<-zhanbi*-(shi+fou)
  
  
  zhanbi<-length(t[t[,leihao]<=leizhi,2])/10
  shi<-length(t[t[,leihao]<=leizhi & t$拖欠贷款因变量=="是" ,2])/length(t[t[,leihao]<=leizhi,2])
  if(shi!=0)
  {
    shi<-shi* log2(shi)
  }
  fou<-length(t[t[,leihao]<=leizhi & t$拖欠贷款因变量=="否" ,2])/length(t[t[,leihao]<=leizhi,2])
  if(fou!=0)
  {
    fou<-fou* log2(fou)
  }
  dayu<-zhanbi*-(shi+fou)
  
  
  xiaohyu + dayu
}


#分裂信息
splitinfo<-function(leihao)
{
  zhi<-aggregate(t$拖欠贷款因变量,by=list(t[,leihao]),function(x) length(x)/length(t$拖欠贷款因变量))
  zhi<-sapply(zhi$x,function(x) x*log2(x))
  -sum(zhi)
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|  

©2019|www.aaa-cg.com.cn 北京漫动者教育科技有限公司|备案号:京ICP备12034770号|监督电话:400-0100-444

快速回复 返回顶部 返回列表