我需要并行化概率神经网络演算。由于我需要一个进度条,我被告知使用plyr而不是%dopar%和foreach。
我们假设我的桌子是:
tra<-data.frame(flag_compro=c(1,0,0,1,1,1,0), a=c(0.3,0.4, 0.2, 0.1,.04, .9, .2), b=c(.3, .6, .7, .6, .8, .9, .1))
“训练”虽然pnn只是记住了结构:
library("pnn")
pnn <- learn(tra, category.column=grep('flag_compro', colnames(tra)))
nn1 <- smooth(pnn, sigma=0.05)
然后我的功能是:
pred_pnn <- function(x){
data.frame(prob = guess(nn1, x)$probabilities[1], row.names = NULL)
}
我们假设我在另一个表中预测(为简单起见,我将使用相同的内容):
test<-tra[, -grep('flag_compro', colnames(tra))]
现在,我知道PNN包一次只能运行一行。所以以下方法确实有效:
pred_pnn(as.matrix(test)[1,])
所以,如果我尝试使用plyr包,请使用:
t<-as.matrix(test)
mlply(t, 1,pred_pnn, .parallel=T, .paropts=c('pnn'))
我收到以下错误:
Error in do.ply(i) :
task 1 failed - "object pred_pnn not found"
In addition: Warning messages:
1: <anonymous>: ... may be used in an incorrect context: ‘.fun(piece, ...)’
我想这种情况正在发生,因为我需要引入一个列名(?),但由于我需要逐行执行,我该如何解决? 另外,我如何添加进度条(或让我了解剩余时间的东西)?
由于