我试图在adabag包中使用predict.boosting来处理新的数据。没有标签(或包中的任何其他函数),我找不到一种方法来使用它来处理数据。
我正在努力:
pr <- predict.boosting(modelfit, test[,2:ncol(test)])它规定:
Error in `[.data.frame`(newdata, , as.character(object$formula[[2]])) :
undefined columns selected但是,如果我包括标签:
pr <- predict.boosting(modelfit, test)效果很好。但是必须有一种方法来使用它作为一个没有标签的数据的预测模型。
谢谢你的帮助!
从包中编辑示例:
library(rusboost)
library(rpart)
data(iris)通过删除大部分的setosa观测结果,使其成为一个不平衡的数据集。
df <- iris[41:150,]创建二进制变量
df$Setosa <- factor(ifelse(df$Species == "setosa", "setosa", "notsetosa"))创建负示例索引
idx <- df$Setosa == "notsetosa"运行模型
test.rusboost <- rusb(Setosa ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
data = df, boot = F, iters = 20, sampleFraction = .1, idx = idx)
predict.boosting(test.rusboost, df)
predict.boosting(test.rusboost, df[,1:4)发布于 2017-08-21 15:53:03
您应该控制train中的所有列(用来训练模型的集合)在test an中都有相同的名称。
请核对:
all(colnames(train) %in% colnames(test))如果这是错误的,你将需要控制你如何建造火车和测试。
如果是真的,一般情况下,请提供一个可复制的例子。
编辑:
控制列相同且包含相同因素的一个很好的方法是使用来自dataPreparation包的dataPreparation。如果不是cas,它将添加级别和列(并警告您)。
使用它:
library(dataPreparation)
test <- sameShape(test, train)发布于 2017-08-22 07:53:02
我想出了一个解决办法,我在我的新数据上附加了一个与标签同名的列,并用随机因子级别填充了它。
df$Setosa <- factor(sample( c("setosa", "notsetosa"), nrow(df), replace=TRUE, prob=c(0.5, 0.5) ))那它就能正常工作了。
https://stackoverflow.com/questions/45800139
复制相似问题