【问题标题】:Using your own model in train (caret package)?在火车中使用您自己的模型(插入符号包)?
【发布时间】:2016-01-15 12:05:45
【问题描述】:

我正在尝试将 Caret 的 train 与未包含的包一起使用,但我收到一个我无法弄清楚的错误,知道吗?我使用following link 开始使用

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")

我得到的错误:

train.default(data.train[, -1], data.train[, 1], preProcess = preProcess,:停止另外:警告消息:1:在 eval(expr, envir, enclos) : Training1 的模型拟合失败: mprior.size=2 方法错误$fit(x = x, y = y, wts = wts, param = tuneValue, lev = obsLevels, : 未使用的参数 (wts = wts, last = 最后,classProbs = classProbs, type = "Regression")

2: 在nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo, : 重采样性能缺失值 措施。

【问题讨论】:

  • 为了搜索解决方案,我认为要搜索的确切英文文本是attempt to apply non-function
  • 感谢您的编辑!
  • 你能在一个小例子中重现你的问题吗?
  • 好吧,我以为我刚刚做了,你需要什么?
  • @RomanLuštrik 我不能让它变小(我已经删除了参数和交叉验证网格),但这是可重现的

标签: r r-caret


【解决方案1】:

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

【讨论】:

  • 你可以在图书馆(BMS)找到它
【解决方案2】:

显然,即使我从不使用参数,我也只需将参数放入函数中:

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)}

【讨论】:

    猜你喜欢
    • 2016-01-28
    • 2015-12-04
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2011-09-26
    • 2017-10-05
    • 1970-01-01
    • 2015-11-14
    相关资源
    最近更新 更多