使用 party 包中的 cforest 处理案例权重和 OOB 预测问题
Issue with caseweights and OOB prediction using cforest from the party package
我正在用可选参数 caseweights 拟合 cforest,它是一个双矩阵,其中 ncol(caseweights)== 我的随机森林中的树数和 nrow(caseweights) = 观察次数。此外,我正在对它们进行归一化,以便 colSums 等于 1。但是,当我想将我的 OOB 预测与真实响应进行比较时,我总是会收到以下错误:
Error in RET@prediction_weights(newdata = newdata, mincriterion =
mincriterion, : cannot compute out-of-bag predictions for
observation number 1
我已经在 github 上查找了 C 源代码,但是找不到为什么它不起作用。
(如果我使用“'standard'”权重也会出现同样的错误,即长度向量 == 观察数,仅用于采样)
我做错了什么?
这是一个可重现的例子:
install.packages('party')
require('party')
head(iris)
weights<-rep(1,nrow(iris))
weights[iris$Species=='virginica']<-2
#normalize
weights<-weights/sum(weights)
ntree<-100
#generate double matrix of caseweights
caseweights<-matrix(rep(weights,ntree),ncol=ntree)
colSums(caseweights)
#fit forest
f <- cforest(Species ~ ., data = iris,controls = cforest_unbiased(ntree=ntree,mtry=3,trace=TRUE),weights=caseweights)
#check out of bag cross classification
table(iris$Species,Predict(f,OOB=TRUE)) #throws error
非常感谢您的帮助。
好吧,none 你的权重是零,所以没有袋外观察,这就是错误消息正确告诉你的。顺便说一句,派对不是在 github 上举办的,而是在 R-forge 上举办的。
托斯滕
我正在用可选参数 caseweights 拟合 cforest,它是一个双矩阵,其中 ncol(caseweights)== 我的随机森林中的树数和 nrow(caseweights) = 观察次数。此外,我正在对它们进行归一化,以便 colSums 等于 1。但是,当我想将我的 OOB 预测与真实响应进行比较时,我总是会收到以下错误:
Error in RET@prediction_weights(newdata = newdata, mincriterion = mincriterion, : cannot compute out-of-bag predictions for observation number 1
我已经在 github 上查找了 C 源代码,但是找不到为什么它不起作用。
(如果我使用“'standard'”权重也会出现同样的错误,即长度向量 == 观察数,仅用于采样)
我做错了什么?
这是一个可重现的例子:
install.packages('party')
require('party')
head(iris)
weights<-rep(1,nrow(iris))
weights[iris$Species=='virginica']<-2
#normalize
weights<-weights/sum(weights)
ntree<-100
#generate double matrix of caseweights
caseweights<-matrix(rep(weights,ntree),ncol=ntree)
colSums(caseweights)
#fit forest
f <- cforest(Species ~ ., data = iris,controls = cforest_unbiased(ntree=ntree,mtry=3,trace=TRUE),weights=caseweights)
#check out of bag cross classification
table(iris$Species,Predict(f,OOB=TRUE)) #throws error
非常感谢您的帮助。
好吧,none 你的权重是零,所以没有袋外观察,这就是错误消息正确告诉你的。顺便说一句,派对不是在 github 上举办的,而是在 R-forge 上举办的。
托斯滕