AAA教育论坛

标题: R语言实现C4.5计算步骤 [打印本页]

作者: 谷小燕老师    时间: 2018-2-28 13:10
标题: R语言实现C4.5计算步骤
#数据集的信息熵
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)
}







欢迎光临 AAA教育论坛 (https://bbs.aaa-cg.com.cn/) X3.2