简体   繁体   English

使用插入符号r进行错误调整自定义算法

[英]error tuning custom algorithm with caret r

I want to tune two parameters of my custom algorithm with caret. 我想用插入符号调整自定义算法的两个参数。 Un parameter (lambda) is numeric and the other parameter (prior) is character. Un参数(lambda)是数字,另一个参数(prior)是字符。 This parameter can take two values "known" or "unknown". 该参数可以采用两个值“已知”或“未知”。 I've tuned the algorithm with just the lambda parameter. 我仅使用lambda参数调整了算法。 It's okay. 没关系。 But when I add the character parameter (prior) gives me the following error: 但是,当我添加字符参数(之前)给我以下错误:

1: In eval(expr, envir, enclos) : model fit failed for Resample01: lambda=1, prior=unknown Error in mdp(Class = y, data = x, lambda = param$lambda, prior = param$prior, : object 'assignment' not found 1:在eval(expr,envir,enclos)中:Resample01的模型拟合失败:lambda = 1,prior = unknown mdp中的错误找不到对象“分配”

the error must be related with the way to specify the character parameter (prior). 该错误必须与指定字符参数(先前)的方式有关。 Here is my code: 这是我的代码:

my_mod$parameters <- data.frame(
  parameter = c("lambda","prior"),
  class = c("numeric", "character"),
  label = c("sample_length", "prior_type"))

## The grid Element

my_mod$grid <- function(x, y, len = NULL){expand.grid(lambda=1:2,prior=c("unknown", "known"))}

mygrid<-expand.grid(lambda=1:2,prior=c('unknown','known'))


## The fit Element

my_mod$fit <- function(x, y, wts, param, lev, last, classProbs, ...){ 
  mdp(Class=y,data=x,lambda=param$lambda,prior=param$prior,info.pred ="yes")
}

## The predict Element

mdpPred <- function(modelFit, newdata, preProc = NULL, submodels = NULL)
  predict.mdp(modelFit, newdata)
my_mod$predict <- mdpPred

fitControl <- trainControl(method = "cv",number = 5,repeats = 5)

train(x=data, y = factor(Class),method = my_mod,trControl = fitControl, tuneGrid = mygrid)

那是因为您必须在fit函数中指定as.character(param$prior)

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

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