R语言完整决策树代码

本文通过R语言实现了一个完整的决策树算法,包括数据加载、计算香农熵、划分数据集、选择最佳特征和递归创建决策树的步骤。通过示例数据集展示了如何从头构建一个决策树,并对数据进行分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#loadData
loadData <- function(){
  dataSet = matrix(c(1,1,0,"yes",1,1,1,"yes",1,0,1,"no",0,1,0,"no",0,1,1,"no"),byrow = T, nrow =5)
  colnames(dataSet) = c("a","b","c","labels")
  return (dataSet)
}

#computing ShannonEnt 实现香农熵
calShannonEnt <- function(dataSet){
  numEntries = nrow(dataSet)
  labels = levels(factor(dataSet[,"labels"]))
  labelCount = NULL
  labelCount[labels] = rep(0,length(labels))
  for(i in 1:numEntries){
    if(dataSet[i,"labels"] %in% labels){
      temp = dataSet[i,"labels"]
      labelCount[temp] = labelCount[temp] + 1
    }
  }
  t = NULL
  shannonEnt = 0
  for(i in  1:length(labelCount)){
    t[i]= labelCount[i]*1.0 / numEntries
    shannonEnt = -t[i]*log2(t[i]) + shannonEnt
  }
#  labelCount = as.numeric(labelCount)
  return (shannonEnt)
}

#划分数据集 split DataSet
splitDataSet <- function(dataSet,axis,value){
  retDataSet = NULL
  for(i in 1:nrow(dataSet)){
    if(dataSet[i,axis] == value){
      tempDataSet = dataSe
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值