step_mutate() 找不到函数 str_remove()
step_mutate() couldn't find the function str_remove()
我有一个食谱,中间有 step_mutate()
函数,在 titanic 数据集上执行文本数据转换,由 stringr
包支持。
library(tidyverse)
library(tidymodels)
extract_title <- function(x) stringr::str_remove(str_extract(x, "Mr\.? |Mrs\.?|Miss\.?|Master\.?"), "\.")
rf_recipe <-
recipe(Survived ~ ., data = titanic_train) %>%
step_impute_mode(Embarked) %>%
step_mutate(Cabin = if_else(is.na(Cabin), "Yes", "No"),
Title = if_else(is.na(extract_title(Name)), "Other", extract_title(Name))) %>%
step_impute_knn(Age, impute_with = c("Title", "Sex", "SibSp", "Parch")) %>%
update_role(PassengerId, Name, new_role = "id")
这组转换非常适合 rf_recipe %>% prep() %>% bake(new_data = NULL)
。
当我尝试在工作流中使用超参数调整和 10 折交叉验证来拟合随机森林模型时,所有模型都失败了。 .notes 列的输出明确指出 mutate()
列 Title
存在问题:找不到函数 str_remove()
.
doParallel::registerDoParallel()
rf_res <-
tune_grid(
rf_wf,
resamples = titanic_folds,
grid = rf_grid,
control = control_resamples(save_pred = TRUE)
)
As this post suggests 我已经明确告诉 R str_remove 应该在 stringr 包中找到。为什么这不起作用,可能是什么原因造成的?
我不认为这会修复错误,但以防万一 str_extract 函数没有写成 stringr :: str_extract,你加载包了吗?
错误出现是因为 step_knn_impute()
随后 gower::gower_topn
函数将所有字符转换为因子。为了解决这个问题,我不得不应用 prep()
和 bake()
函数,但没有在工作流程中包含配方。
prep_recipe <- prep(rf_recipe)
train_processed <- bake(prep_recipe, new_data = NULL)
test_processed <- bake(prep_recipe, new_data = titanic_test %>%
mutate(across(where(is.character), as.factor)))
现在模型收敛了。
我有一个食谱,中间有 step_mutate()
函数,在 titanic 数据集上执行文本数据转换,由 stringr
包支持。
library(tidyverse)
library(tidymodels)
extract_title <- function(x) stringr::str_remove(str_extract(x, "Mr\.? |Mrs\.?|Miss\.?|Master\.?"), "\.")
rf_recipe <-
recipe(Survived ~ ., data = titanic_train) %>%
step_impute_mode(Embarked) %>%
step_mutate(Cabin = if_else(is.na(Cabin), "Yes", "No"),
Title = if_else(is.na(extract_title(Name)), "Other", extract_title(Name))) %>%
step_impute_knn(Age, impute_with = c("Title", "Sex", "SibSp", "Parch")) %>%
update_role(PassengerId, Name, new_role = "id")
这组转换非常适合 rf_recipe %>% prep() %>% bake(new_data = NULL)
。
当我尝试在工作流中使用超参数调整和 10 折交叉验证来拟合随机森林模型时,所有模型都失败了。 .notes 列的输出明确指出 mutate()
列 Title
存在问题:找不到函数 str_remove()
.
doParallel::registerDoParallel()
rf_res <-
tune_grid(
rf_wf,
resamples = titanic_folds,
grid = rf_grid,
control = control_resamples(save_pred = TRUE)
)
As this post suggests 我已经明确告诉 R str_remove 应该在 stringr 包中找到。为什么这不起作用,可能是什么原因造成的?
我不认为这会修复错误,但以防万一 str_extract 函数没有写成 stringr :: str_extract,你加载包了吗?
错误出现是因为 step_knn_impute()
随后 gower::gower_topn
函数将所有字符转换为因子。为了解决这个问题,我不得不应用 prep()
和 bake()
函数,但没有在工作流程中包含配方。
prep_recipe <- prep(rf_recipe)
train_processed <- bake(prep_recipe, new_data = NULL)
test_processed <- bake(prep_recipe, new_data = titanic_test %>%
mutate(across(where(is.character), as.factor)))
现在模型收敛了。