一致的;错误:为步骤选择的所有列都应为数字“0”;在R tidymodels中尝试套索模型
尝试运行我的第一个套索模型,遇到了一些问题。我有一个医学数据集,我试图从大约60个预测因子中预测二分结果(疾病)。尽管在配方阶段已经将所有列都转换为虚拟变量,但在出现错误“为步骤选择的所有列都应该是数字”之前,我已经对网格进行了优化。我减少了预测器的数量,看看这是否改变了什么,但似乎并没有解决它。这种结果是罕见的,大约3%的病例都能看到,所以我不知道这会影响到什么。 代码如下 分为测试和培训数据,并按疾病分层一致的;错误:为步骤选择的所有列都应为数字“0”;在R tidymodels中尝试套索模型,r,lasso-regression,tidymodels,R,Lasso Regression,Tidymodels,尝试运行我的第一个套索模型,遇到了一些问题。我有一个医学数据集,我试图从大约60个预测因子中预测二分结果(疾病)。尽管在配方阶段已经将所有列都转换为虚拟变量,但在出现错误“为步骤选择的所有列都应该是数字”之前,我已经对网格进行了优化。我减少了预测器的数量,看看这是否改变了什么,但似乎并没有解决它。这种结果是罕见的,大约3%的病例都能看到,所以我不知道这会影响到什么。 代码如下 分为测试和培训数据,并按疾病分层 set.seed(123) df_split <- initial_split(
set.seed(123)
df_split <- initial_split(df, strata = disease)
df_train <- training(df_split)
df_test <- testing(df_split)
set.seed(123)
df_分割%
添加配方(df配方)
要调整的惩罚值网格
df_reg_grid <- tibble(penalty = 10^seq(-4, -1, length.out = 30))
df_reg_grid您收到的错误来自step\u medianimpute()
step\u medianimpute()
要求所有变量都是数字,但它是通过all\u predictors()传递因子变量的
解决这个问题的一种方法是在插补之前重新安排配方,创建虚拟变量
库(配方)
库(模型数据)
数据(ames)
df_配方%
步骤\u medianimpute(所有\u预测器())%>%
步骤虚拟(所有标称值(),-所有结果())%>%
步骤zv(所有预测器())%>%
步骤\u规格化(所有\u预测器())
准备(df_配方)
#>错误:为步骤选择的所有列都应为数字
df_配方%
步骤虚拟(所有标称值(),-所有结果())%>%
步骤\u medianimpute(所有\u预测器())%>%
步骤zv(所有预测器())%>%
步骤\u规格化(所有\u预测器())
准备(df_配方)
#>数据配方
#>
#>投入:
#>
#>角色变量
#>结果1
#>预测器73
#>
#>培训数据包含2930个数据点,无缺失数据。
#>
#>操作:
#>
#>来自MS_子类、MS_分区、街道、胡同等的虚拟变量。。。[经过培训]
#>地块临街、地块面积的中值插补。。。[经过培训]
#>零差异过滤器删除2项[已培训]
#>地块临街、地块面积的居中和缩放。。。[经过培训]
由(v1.0.0)创建于2021-04-27。您收到的错误来自步骤\u medianimpute()
step\u medianimpute()
要求所有变量都是数字,但它是通过all\u predictors()传递因子变量的
解决这个问题的一种方法是在插补之前重新安排配方,创建虚拟变量
库(配方)
库(模型数据)
数据(ames)
df_配方%
步骤\u medianimpute(所有\u预测器())%>%
步骤虚拟(所有标称值(),-所有结果())%>%
步骤zv(所有预测器())%>%
步骤\u规格化(所有\u预测器())
准备(df_配方)
#>错误:为步骤选择的所有列都应为数字
df_配方%
步骤虚拟(所有标称值(),-所有结果())%>%
步骤\u medianimpute(所有\u预测器())%>%
步骤zv(所有预测器())%>%
步骤\u规格化(所有\u预测器())
准备(df_配方)
#>数据配方
#>
#>投入:
#>
#>角色变量
#>结果1
#>预测器73
#>
#>培训数据包含2930个数据点,无缺失数据。
#>
#>操作:
#>
#>来自MS_子类、MS_分区、街道、胡同等的虚拟变量。。。[经过培训]
#>地块临街、地块面积的中值插补。。。[经过培训]
#>零差异过滤器删除2项[已培训]
#>地块临街、地块面积的居中和缩放。。。[经过培训]
由(v1.0.0)于2021-04-27创建非常感谢您的帮助!非常感谢你的努力!
df_model <-
logistic_reg(penalty = tune(), mixture = 1) %>%
set_engine("glmnet")
df_recipe <-
recipe(dfPyVAN ~ ., data = df_train) %>%
step_medianimpute(all_predictors()) %>%
step_dummy(all_nominal(), -all_outcomes()) %>%
step_zv(all_predictors()) %>%
step_normalize(all_predictors())
df_workflow <-
workflow() %>%
add_model(df_model) %>%
add_recipe(df_recipe)
df_reg_grid <- tibble(penalty = 10^seq(-4, -1, length.out = 30))
df_res <-
df_workflow %>%
tune_grid(validation_set,
grid = df_reg_grid,
control = control_grid(save_pred = TRUE),
metrics = metric_set(roc_auc))