问题描述
在过去的几个小时里,我一直在尝试训练一个插入符号glmnet模型,但它总是使我出错,我的数据集有15个观察值,3个是因子变量,11个是数字和1个是整数。我将数据集拆分为70/30火车测试拆分。
数据集中有一些NA值,因此我尝试在配方代码中估算NA,然后将其通过管道传递到中心并缩放数值数据。
当我尝试使用已有的配方预处理数据时,我总是收到错误消息
library(caret)
library(tidyverse)
library(recipes)
data = "data.csv"
'data.frame': 168 obs. of 15 variables:
$ COUNTRY : Factor w/ 190 levels "Country1","Country10",..: 1 103 114 125 136 147 158 169 180 2 ...
$ GOVERNMENT : Factor w/ 5 levels "AUTOCRATIC","LEFT"
$ POPULATION : num 45.4 45.1 80.2 7.8 37.5 ...
$ AGE25PROP : num 13.6 17.9 11.3 17 15.1 ...
$ AGE55PROP : num 33.5 36.5 34.4 32.5 33.1 ...
$ POPDENSITY : num 498 502 494 506 492 ...
$ GDP2019 : num 22.6 22.7 58 56.4 57.4 ...
$ INFANTMORT : num 16.3 14.2 17.7 NA 15.2 ...
$ DOC10 : num 22.6 24.1 24.7 NA 26.6 ...
$ VAXRATE : num 39.5 35.2 61.6 NA 60.6 ...
$ HEALTHCARE_BASIS : Factor w/ 4 levels "FREE","INSURANCE",$ HEALTHCARE_COST : num 4759 15281 NA 5009 NA ...
$ DEATHRATE : num 21.7 27.3 17.3 16.7 25.2 ...
$ HEALTHCARE_COST_shadow: num 0 0 1 0 1 1 0 1 0 0 ...
$ na_count : int 0 0 1 3 1 2 0 1 4 0 ...
使用“ DEATHRATE”作为Y变量进行测试/训练拆分
subIndex <- caret::createDataPartition(y = data$DEATHRATE,p = 0.7,list = FALSE)
train <- data[subIndex]
test <- data[-subIndex]
使用配方进行预处理,将“ DEATHRATE”作为因变量,将“ COUNTRY”作为id
rec <- recipes::recipe("DEATHRATE" ~.,data = train) %>%
update_role("COUNTRY",new_role = "id") %>%
step_knnimpute(all_predictors(),neighbours = 5) %>%
step_center(all_numeric(),-has_role("outcome")) %>%
step_scale(all_numeric(),-has_role("outcome"))
我总是得到错误
Error in terms.formula(formula,data = data) :
invalid model formula in Extractvars
训练模型
model <- caret::train(rec,data = train,method = "glmnet")
有人知道我在做什么吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)