我是数据科学领域的新手,我想找出我一直面临以下错误的原因:
Error in grid_latin_hypercube(): these arguments contain unknowns: `mtry`. See the finalize() function. 我的计算例程结构如下:
datatrain <- training(data)
rf_mod <- rand_forest(
trees = tune(),
min_n = tune(),
mtry = tune()
) %>% set_engine("randomForest") %>% set_mode("regression")
tuneargs <- rf_mod
reci <- recipe(Response ~.,datatrain)
workf <- workflow() %>%
add_model(tuneargs) %>%
add_recipe(reci)
rand_grid <- grid_latin_hypercube(trees(),
min_n(),
mtry(),
size = 100)在此之后,将出现上述错误。
我认为这个错误可能与我在考虑randomForest算法和使用grid_latin_hypercube这一事实有关。因此,参数规格可能不一致。
在这种情况下,我怎么解决呢?
发布于 2022-11-01 07:33:15
在随机林中,mtry定义随机选择的预测器的数量。
由于您没有指定应该在哪个培训数据上运行mtry(),因此范围是未定义的:
library(dials)
library(dplyr)
mtry() %>% range_get()
$lower
[1] 1
$upper
unknown()这是错误消息中提到的未知信息。
为了避免错误,您可以按照建议使用finalize来告诉mtry要使用哪些预测器:
rand_grid <- grid_latin_hypercube(trees(),
min_n(),
finalize(mtry(),select(datatrain,-Response)),
size = 100)
## A tibble: 100 × 3
#trees min_n mtry
#<int> <int> <int>
#1 1721 15 11
#2 730 12 4
#3 1081 3 1
#4 184 24 8
#5 222 2 3
#6 1584 31 6
#7 400 15 8
#8 1049 14 7
#9 1786 8 4
#10 1378 11 10
## … with 90 more rows
## ℹ Use `print(n = ...)` to see more rowshttps://stackoverflow.com/questions/74249544
复制相似问题