【问题标题】:How to resolve when I build decision tree using R使用 R 构建决策树时如何解决
【发布时间】:2021-03-02 20:47:10
【问题描述】:

我使用 R 构建了一个决策树模型,我想在预测值大于 50% 时向树中添加一个新列,并在此列中打印 yes

注意:数据集中的目标库尔蒙是布尔值 1 = 心脏病,0 = 正常

library(rpart)
tree<-rpart(target ~ .,method ='class', data=train)
print(summary(tree))
tree.preds<-predict(tree,test)
print(head(tree.preds))

tree.preds<-as.data.frame(tree.preds)
joiner<-function(x){
  if(x>=0.5)
    return('yes')
    
  else
    return('no')
      
}
tree.preds$disease<-sapply(tree.preds$yes,joiner)

print(head(tree.preds))

运行后出现此错误:

Error in `$<-.data.frame`(`*tmp*`, t, value = list()) : 
  replacement has 0 rows, data has 91

【问题讨论】:

标签: r machine-learning decision-tree


【解决方案1】:

您可以使用ifelse 代替sapply 的迭代:

library(rpart)

dat = iris[,-5]
dat$target = as.numeric(iris$Species=="versicolor")
idx = sample(nrow(dat),100)
train = dat[idx,]
test = dat[-idx,]

tree = rpart(target ~ .,method ='class', data=train)
tree.preds = data.frame(predict(tree,test))
tree.preds$Species = ifelse(tree.preds[,2]>0.5,"yes","no")

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 2018-07-24
    • 2019-01-30
    • 2021-04-22
    • 2014-05-09
    • 1970-01-01
    • 2015-06-09
    • 2019-10-02
    • 2015-12-07
    相关资源
    最近更新 更多