多个数据帧的插入符训练功能作为功能
Caret train function for muliple data frames as function
6年前就有一个类似的问题一直没有解决(R -- Can I apply the train function in caret to a list of data frames?)
这就是我再次提出这个话题的原因。
我目前正在为我的大 R 项目编写自己的函数,我想知道是否有机会总结 pakage caret
的模型训练函数 train()
对于具有不同预测变量的不同数据帧。
我的函数应如下所示:
lda_ex <- function(data, predictor){
model <- train(predictor ~., data,
method = "lda",
trControl = trainControl(method = "none"),
preProc = c("center","scale"))
return(model)
}
之后使用它应该是这样的:
data_iris <- iris
predictor_iris <- "Species"
iris_res <- lda_ex(data = data_iris, predictor = predictor_iris)
不幸的是,据我所知,R 公式无法处理作为输入的变量。
有什么我想念的吗?
预先感谢您帮助我!
解决这个问题将对我的工作有很大帮助sheet确保清洁和安全工作。
通过写predictor_iris <- "Species"
,你基本上是在predictor_iris
中保存一个字符串对象。因此,当您 运行 lda_ex
时,我猜您会在 train()
中的 formula
对象方面产生一些错误,因为您正试图使用协变量向量来预测字符串。
确实,我尝试了以下玩具示例:
X = rnorm(1000)
Y = runif(1000)
predictor = "Y"
lm(predictor ~ X)
这给出了关于变量长度差异的错误。
让我修改你的功能:
lda_ex <- function(data, formula){
model <- train(formula, data,
method = "lda",
trControl = trainControl(method = "none"),
preProc = c("center","scale"))
return(model)
}
主要区别在于现在我们必须传递整个 formula
,而不是仅传递预测变量。这样,我们就避免了与字符串相关的问题。
library(caret) # Recall to specify the packages needed to reproduce your examples!
data_iris <- iris
formula_iris = Species ~ . # Key difference!
iris_res <- lda_ex(data = data_iris, formula = formula_iris)
6年前就有一个类似的问题一直没有解决(R -- Can I apply the train function in caret to a list of data frames?) 这就是我再次提出这个话题的原因。
我目前正在为我的大 R 项目编写自己的函数,我想知道是否有机会总结 pakage caret
的模型训练函数 train()
对于具有不同预测变量的不同数据帧。
我的函数应如下所示:
lda_ex <- function(data, predictor){
model <- train(predictor ~., data,
method = "lda",
trControl = trainControl(method = "none"),
preProc = c("center","scale"))
return(model)
}
之后使用它应该是这样的:
data_iris <- iris
predictor_iris <- "Species"
iris_res <- lda_ex(data = data_iris, predictor = predictor_iris)
不幸的是,据我所知,R 公式无法处理作为输入的变量。
有什么我想念的吗? 预先感谢您帮助我!
解决这个问题将对我的工作有很大帮助sheet确保清洁和安全工作。
通过写predictor_iris <- "Species"
,你基本上是在predictor_iris
中保存一个字符串对象。因此,当您 运行 lda_ex
时,我猜您会在 train()
中的 formula
对象方面产生一些错误,因为您正试图使用协变量向量来预测字符串。
确实,我尝试了以下玩具示例:
X = rnorm(1000)
Y = runif(1000)
predictor = "Y"
lm(predictor ~ X)
这给出了关于变量长度差异的错误。
让我修改你的功能:
lda_ex <- function(data, formula){
model <- train(formula, data,
method = "lda",
trControl = trainControl(method = "none"),
preProc = c("center","scale"))
return(model)
}
主要区别在于现在我们必须传递整个 formula
,而不是仅传递预测变量。这样,我们就避免了与字符串相关的问题。
library(caret) # Recall to specify the packages needed to reproduce your examples!
data_iris <- iris
formula_iris = Species ~ . # Key difference!
iris_res <- lda_ex(data = data_iris, formula = formula_iris)