f11<-as.factor(Z24train$f1)
fit_f1 <- rpart(f11~TSU+TSL+TW+TP,data = Z24train,method="class")
plot(fit_f1, uniform=TRUE, main="Classification Tree for Kyphosis")
但是出现了这个错误:
Error in plot.rpart(fit_f1, uniform = TRUE, main = "Classification Tree for Kyphosis") :
fit is not a tree, just a root
这是什么问题? 感谢您的帮助:)
答案 0 :(得分:7)
这可能是由于RPART
在使用默认控制参数后无法使用给定数据集创建决策树。
rpart.control(minsplit = 20, minbucket = round(minsplit/3), cp = 0.01,
maxcompete = 4, maxsurrogate = 5, usesurrogate = 2, xval = 10,
surrogatestyle = 0, maxdepth = 30, ...)
如果要创建树,可以调整控制参数并创建一个过拟合树。
tree <- rpart(f11~TSU+TSL+TW+TP,data = Z24train,method="class",control =rpart.control(minsplit =1,minbucket=1, cp=0))
从r文档中获取的参数描述 (https://stat.ethz.ch/R-manual/R-devel/library/rpart/html/rpart.control.html)
<强> minsplit 强>
节点中必须存在的最小观察数,以便尝试拆分。
<强> minbucket 强>
任何终端节点中的最小观测数。如果只指定了minbucket或minsplit中的一个,则代码可以根据需要将minsplit设置为minbucket * 3或minbucket设置为minsplit / 3。
<强> CP 强>
复杂性参数。不尝试任何不会降低整体缺乏适应度的分裂。例如,通过anova分裂,这意味着整个R平方必须在每一步增加cp。此参数的主要作用是通过修剪明显不值得的拆分来节省计算时间。从本质上讲,用户通知程序任何不能通过cp改善拟合的分割都可能会被交叉验证修剪掉,因此程序无需追求它