我正在使用R中的C50软件包。这个算法通过可定制的试验数量来训练提升的决策树,我希望预测每个试验的结果。
该软件包具有“预测”算法,但它仅预测所有试验,或使用前n次试验进行预测。但是,它不允许单独预测每个试验。
我发现解决此问题的一种方法是执行以下操作:
#Load libraries
library(C50)
library(party)
library(rpart)
#Load data
data(churn)
#Train model with more four trials
set.seed(10)
tree.model <- C5.0(x = churnTrain[, -20],
y = churnTrain$churn,
trials = 4,
control = C5.0Control(noGlobalPruning = TRUE,
earlyStopping=FALSE))
#Convert each trial to a separate a class party object
A <- list()
for (i in 1: tree.model$trials["Actual"]){
A[[i]]<-partykit::as.party(tree.model,trial=i-1)
}
#Predict the outcome of each separate trial
Z <- list()
for (i in 1: tree.model$trials["Actual"]){
Z[[i]]<-predict(A[[i]],churnTest[,-20], type = "prob")
print(Z[[i]][1,])
}
然而,有一种训练C5.0树的替代方法,由下式给出:
formula2 <- churn ~ .
set.seed(10)
tree.model <- C5.0(formula2,
data=churnTrain,
trials = 4,
control = C5.0Control(noGlobalPruning = TRUE,
earlyStopping=FALSE))
当我训练像这样的C5.0树时,我无法将每个试验转换为单独的一个派对对象:
z1<-partykit::as.party(tree.model,trial=1)
Error in `[.data.frame`(mf, rsp) : undefined columns selected
因此,这提出了两个主要问题:
谢谢