简体   繁体   English

在火车上使用您自己的模型(插入包)?

[英]Using your own model in train (caret package)?

I am trying to use train from Caret with a package which is not included, and I get an error that I don't manage to figure out, any idea ? 我试图使用来自Caret的火车,包括一个未包含的包裹,我得到一个我无法弄清楚的错误,任何想法? I used the following link to get started 我使用以下链接开始

bmsMeth<-list(type="Regression",library="BMS",loop=NULL,prob=NULL) 
prm<-data.frame(parameter="mprior.size",class="numeric",label="mprior.size")
bmsMeth$parameters<-prm
bmsGrid<-function(x,y,len=NULL){
out<-expand.grid(mprior.size=seq(2,3,by=len))
out
}
bmsMeth$grid<-bmsGrid
bmsFit<-function(x,y,param, lev=NULL) {bms(cbind(y,x),burn=5000,iter=100000,nmodel=1000,mcmc="bd",g="UIP",mprior.size=param$mprior.size)}
bmsMeth$fit<-bmsFit
bmsPred<-function(modelFit,newdata,preProcess=NULL,submodels=NULL){predict(modelFit,newdata)}
bmsMeth$predict<-bmsPred

library(caret)
data.train<-data.frame(runif(100),runif(100),runif(100),runif(100),runif(100))#synthetic data for testing
bms(cbind(data.train[,1],data.train[,-1]),burn=5000,iter=100000,nmodel=1000,mcmc="bd",g="UIP",mprior.size=2)#function out of caret is working

preProcess=c('center','scale')
myTimeControl <- trainControl(method = "timeslice",initialWindow = 0.99*nrow(data.train), horizon = 1, fixedWindow = FALSE)
tune <- train(data.train[,-1],data.train[,1],preProcess=preProcess,method = bmsMeth,tuneLength=2,metric= "RMSE",trControl =myTimeControl,type="Regression")

Error I get : 我得到的错误:

Error in train.default(data.train[, -1], data.train[, 1], preProcess = preProcess, : Stopping In addition: Warning messages: 1: In eval(expr, envir, enclos) : model fit failed for Training1: mprior.size=2 Error in method$fit(x = x, y = y, wts = wts, param = tuneValue, lev = obsLevels, : unused arguments (wts = wts, last = last, classProbs = classProbs, type = "Regression") train.default中的错误(data.train [, - 1],data.train [,1],preProcess = preProcess,:Stopping另外:警告消息:1:在eval(expr,envir,enclos)中:模型适合失败for Training1:mprior.size = 2方法$ fit中的错误(x = x,y = y,wts = wts,param = tuneValue,lev = obsLevels,:unused arguments(wts = wts,last = last,classProbs = classProbs, type =“回归”)

2: In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo, : There were missing values in resampled performance measures. 2:在nominalTrainWorkflow中(x = x,y = y,wts = weights,info = trainInfo,:重采样性能度量中存在缺失值。

显然,即使我从不使用它们,我也必须将参数放在函数中:

bmsFit<-function(x,y,param, lev=NULL, last, weights, classProbs, ...) {bms(data.frame(y,x),burn=5000,iter=100000,nmodel=1000,mcmc="bd",g="UIP",mprior.size=param$mprior.size)}

你的函数bms()似乎不存在......

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM