在 R 中的决策树中显示更多节点?
Display more nodes in decision tree in R?
根据我有7个节点的结果,我想在结果中显示2个以上的节点,但现有的似乎我一直显示2个节点。
有没有办法显示更多的节点并且更好看?
library(rpart)
tr1<-rpart(leaveyrx~marstx.f+age+jobtitlex.f+organizationunitx.f+fteworkschedule+nationalityx.f+eesubgroupx.f+lvlx.f+sttpmx.f+ staff2ndtpmx.f+staff3rdtpmx.f+staff4thtpmx.f, method="class",data=btree)
printcp(tr1)
plotcp(tr1)
summary(tr1)
plot(tr1, uniform=TRUE, margin = 0.2, main="Classification Tree for Exploration") text(tr1, use.n=TRUE, all=TRUE, cex=.5)
*转发
你的问题可能不是你的情节,而是你的决策树模型。你能澄清为什么你期望 7 个节点吗?当您只有两个(叶)节点时,这可能意味着您的模型仅使用一个预测变量并使用二元分类作为响应变量。这可能是由于预测变量与响应变量具有 1:1 关系。例如,如果您预测性别(男、女)并且您的响应变量之一是性别 (M,F)。在这种情况下,不需要决策树模型,因为您可以只使用预测变量。也许在复制响应变量的数据预处理过程中发生了某些事情。以下是一些需要注意的事项:
1) 计算正确分类率 (CCR)。如果它是 0,那么你就有了一个完美的模型。
yhat<-predict(tr1, type="class") # Model Predictions
sum(yhat != btree$leaveyrx)/nrow(btree) # CCR
2) 查看您的模型使用的预测变量。仔细检查此变量是否已正确处理。尝试将其从模型中排除。
tr1$variable.importance
3) 如果您绝对确定变量计算正确并且应该在模型中使用它,请尝试增加 cp 值。默认值为 0.01。但是即使 cp 值很高,决策树也会 运行 很快。在修改 cp 值的同时,还要考虑其他调整参数。 ?rpart.control
control <- rpart.control(minbucket = 20, cp = 0.0002, maxsurrogate = 0, usesurrogate = 0, xval = 10)
tr1 <- rpart(leaveyrx~marstx.f+age+jobtitlex.f+organizationunitx.f+fteworkschedule+nationalityx.f+eesubgroupx.f+lvlx.f+sttpmx.f+ staff2ndtpmx.f+staff3rdtpmx.f+staff4thtpmx.f,
data=btree,
method = "class",
control = control)
4) 一旦你拥有一棵包含许多节点的树,你将需要 trim 将其返回。可能您最好的模型实际上只由一个变量驱动,因此只有两个节点
# Plot the cp
plotcp(tr1)
printcp(tr1) # Printing cp table (choose the cp with the smallest xerror)
# Prune back to optimal size, according to plot of CV r^2
tr1.pruned <- prune(tr1, cp=0.001) #approximately the cp corresponding to the best size
5) rpart 库是绘制决策树的良好资源。那里有很多很棒的文章,但这里有一篇关于 rpart 的好文章:http://www.milbo.org/rpart-plot/prp.pdf
对post您的模型的一些总结可能也有帮助。
根据我有7个节点的结果,我想在结果中显示2个以上的节点,但现有的似乎我一直显示2个节点。
有没有办法显示更多的节点并且更好看?
library(rpart)
tr1<-rpart(leaveyrx~marstx.f+age+jobtitlex.f+organizationunitx.f+fteworkschedule+nationalityx.f+eesubgroupx.f+lvlx.f+sttpmx.f+ staff2ndtpmx.f+staff3rdtpmx.f+staff4thtpmx.f, method="class",data=btree)
printcp(tr1)
plotcp(tr1)
summary(tr1)
plot(tr1, uniform=TRUE, margin = 0.2, main="Classification Tree for Exploration") text(tr1, use.n=TRUE, all=TRUE, cex=.5)
*转发
你的问题可能不是你的情节,而是你的决策树模型。你能澄清为什么你期望 7 个节点吗?当您只有两个(叶)节点时,这可能意味着您的模型仅使用一个预测变量并使用二元分类作为响应变量。这可能是由于预测变量与响应变量具有 1:1 关系。例如,如果您预测性别(男、女)并且您的响应变量之一是性别 (M,F)。在这种情况下,不需要决策树模型,因为您可以只使用预测变量。也许在复制响应变量的数据预处理过程中发生了某些事情。以下是一些需要注意的事项:
1) 计算正确分类率 (CCR)。如果它是 0,那么你就有了一个完美的模型。
yhat<-predict(tr1, type="class") # Model Predictions
sum(yhat != btree$leaveyrx)/nrow(btree) # CCR
2) 查看您的模型使用的预测变量。仔细检查此变量是否已正确处理。尝试将其从模型中排除。
tr1$variable.importance
3) 如果您绝对确定变量计算正确并且应该在模型中使用它,请尝试增加 cp 值。默认值为 0.01。但是即使 cp 值很高,决策树也会 运行 很快。在修改 cp 值的同时,还要考虑其他调整参数。 ?rpart.control
control <- rpart.control(minbucket = 20, cp = 0.0002, maxsurrogate = 0, usesurrogate = 0, xval = 10)
tr1 <- rpart(leaveyrx~marstx.f+age+jobtitlex.f+organizationunitx.f+fteworkschedule+nationalityx.f+eesubgroupx.f+lvlx.f+sttpmx.f+ staff2ndtpmx.f+staff3rdtpmx.f+staff4thtpmx.f,
data=btree,
method = "class",
control = control)
4) 一旦你拥有一棵包含许多节点的树,你将需要 trim 将其返回。可能您最好的模型实际上只由一个变量驱动,因此只有两个节点
# Plot the cp
plotcp(tr1)
printcp(tr1) # Printing cp table (choose the cp with the smallest xerror)
# Prune back to optimal size, according to plot of CV r^2
tr1.pruned <- prune(tr1, cp=0.001) #approximately the cp corresponding to the best size
5) rpart 库是绘制决策树的良好资源。那里有很多很棒的文章,但这里有一篇关于 rpart 的好文章:http://www.milbo.org/rpart-plot/prp.pdf
对post您的模型的一些总结可能也有帮助。