我运行一个非并行的randomForest对象,没有这样的问题:
> rf <- randomForest(t2[,-c(1,2,7,12)],t2[,2],
+ ,sampsize=c(10000),do.trace=F,importance=TRUE,ntree=1,,forest=TRUE)
Warning message:
In randomForest.default(t2[, -c(1, 2, 7, 12)], t2[, 2], , sampsize = c(10000), :
The response has five or fewer unique values. Are you sure you want to do regression?
> rf
Call:
randomForest(x = t2[, -c(1, 2, 7, 12)], y = t2[, 2], ntree = 1, sampsize = c(10000), importance = TRUE, do.trace = F, forest = TRUE)
Type of random forest: regression
Number of trees: 1
No. of variables tried at each split: 2
Mean of squared residuals: 0.07444926
% Var explained: -19.36
> rf$rsq
[1] -0.1936248
现在我使用并行的东西运行相同的代码并且没有得到MSE或%Var解释:
> library("foreach")
> library("doSNOW")
> registerDoSNOW(makeCluster(2, type="SOCK"))
>
>
>
> rf <- foreach(ntree = rep(1, 2), .combine = combine, .packages = "randomForest") %dopar%
+ randomForest(t2[,-c(1,2,7,12)],t2[,2],
+ ,sampsize=c(10000),do.trace=F,importance=TRUE,ntree=1,,forest=TRUE)
> rf
Call:
randomForest(x = t2[, -c(1, 2, 7, 12)], y = t2[, 2], ntree = 1, sampsize = c(10000), importance = TRUE, do.trace = F, forest = TRUE)
Type of random forest: regression
Number of trees: 2
No. of variables tried at each split: 2
> rf$rsq
NULL
知道我做错了什么吗?感谢。
答案 0 :(得分:7)
它不是并行位,而是使用randomForest包中的combine
。引用?combine
:
混乱,错误,mse和rsq组件(以及 测试组件中的相应组件(如果存在) 组合对象将为NULL。
所以你必须自己使用预测值来计算这些东西。