r - train 函数中未使用的参数
问题描述
祝大家好日子
当我使用 RF 超参数调整时,我的代码出现问题。算法(模拟退火)给我 4000 的 RMSE 值。我不确定它从哪里执行此计算,因为在代码中我没有指定任何网格/值?代码如下,最初用于 SVM,但我为 RF 进行了编辑。
svm_obj <- function(param, maximize = FALSE) {
mod <- train(Effort ~ ., data = tr,
method = "rf",
preProc = c("center", "scale", "zv"),
metric = "MAE",
trControl = ctrl,
tuneGrid = data.frame(mtry = 10^(param[1])))
##, sigma = 10^(param[2])))
if(maximize)
-getTrainPerf(mod)[, "TrainRMSE"] else
getTrainPerf(mod)[, "TrainRMSE"]
}
## Simulated annealing from base R
set.seed(45642)
san_res <- optim(par = c(0), fn = svm_obj, method = "SANN",
control = list(maxit = 10))
The answer I get is: $value
[1] 4487.821
$counts
function gradient
10 NA
$convergence
[1] 0
$message
NULL
解决方案
好吧,我不知道你用什么值调用你的函数,所以很难发现错误。
但是,mtry 是一个需要介于 1 和列数之间的值,而在我看来,您可能会将其设置为 10 的幂次方 - 这很可能超出范围:)
推荐阅读
- python - Discord.py 变量
- flutter - 使用flutter graphql库时,如何在http请求中添加自定义标头以进行身份验证?
- geolocation - iOs 上的 Geolocation API 和允许访问窗口
- javascript - 如何将任意字符串转换为有效的 React ComponentName
- javascript - 如何生成两次随机字符串
- javascript - 使用 Syncfusion 的 EJ2 组件脚本文件时出现“ej.navigations is undefined”错误
- python - SVM 模型中的不同输出和超参数调整结果
- javascript - 我如何取消整个指令的值
- c# - Windows 服务在执行 EndAcceptTcpClient 时意外终止 - 即在接受新的套接字客户端时
- javascript - 这是类函数中的窗口