2016-11-25 54 views
0

我试图用rpart在R中创建一个decisiontree。我如何使用rpart创建一棵简单的树?

#rm(list = ls()) 
cat("\014") 

library("rpart") 
#data 
mf <- factor(c("m","m","f","f","m","f","m")) 
heights <- c(180, 175 , 160, 166, 185, 170, 190) 
x = data.frame(cbind(heights, mf)) 
#create tree 
fit <- rpart(mf ~ ., data = x, method = "anova") 

predicted <- predict(fit,character = 180) 

我预计“预测”给我一个“m”或“f”,但我得到的只是一个微不足道的数字。 为了得到一封信,我需要改变什么?

感谢

回答

0

我认为问题是,你的例子是太小了,我谈到了使3倍。此外,“anova”方法旨在预测类别的手段。 (你也需要扔掉教你使用data.frame(cbind(...))的书)我猜你想要这样的东西。

mf <- factor(c("m","m","f","f","m","f","m")) 
heights <- c(180, 175 , 160, 166, 185, 170, 190) 
x = data.frame(heights=rep(heights,3), mf) 
rm(heights);rm(mf) 
fit <- rpart(mf ~ heights, data = x, method="class") 

(predicted <- predict(fit, data.frame(heights = c(160,190)))) 
    f m 
1 1 0 
2 0 1 

png(); plot(fit) 
par(xpd=NA) 
text(fit, use.n = TRUE);dev.off() 

enter image description here