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