微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Caret和配方来训练模型:错误配方中并非所有变量都存在

如何解决使用Caret和配方来训练模型:错误配方中并非所有变量都存在

在过去的几个小时里,我一直在尝试训练一个插入符号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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?