首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当为数据使用`aret`时,我得到"Error in terms.formula( formula,data = data):‘. in formula and no 'data’参数“

当为数据使用`aret`时,我得到"Error in terms.formula( formula,data = data):‘. in formula and no 'data’参数“
EN

Stack Overflow用户
提问于 2020-06-29 13:35:30
回答 1查看 46关注 0票数 0

我正在尝试使用caret查找对一些数据进行kNN分析的最佳k

代码语言:javascript
复制
library(tidyverse)
library(caret)

# Read and clean up the data
ugriz  <- read.table("QSOs_1st_50k.dat-mags.dat")
ugriz[ugriz == -999] <- NA
fields <- c('name', 'z','delta_z','NED_class','SDSS_class','no_radio','radio_max','no_UV', 'UV_min',
    'u', 'g', 'r', 'i', 'z_mag', 'I', 'J', 'H', 'K', 'W1', 'SPIT_5',
    'W2', 'SPIT_8', 'W3', 'W4', 'NUV', 'FUV')
names(ugriz) <- fields

sample_n(ugriz, 5)
attach(ugriz)

# Randomly split the dataset into training and testing subsets
set.seed(123) # for reproducible randomness in producing training and test sets
training.samples <- z %>% createDataPartition(p=0.5, list = FALSE)
train.data <- ugriz[training.samples]
test.data <- ugriz[-training.samples]

model <- train(z~., data = train.data, method = "knn",
    trControl = trainControl("cv", number = 10),
    preProcess = c("center","scale"),
    tuneLength = 10)

我的目标是测试z对列'u','g','r','I','z_mag','i','J','H','K','W1','SPIT_5','W2','SPIT_8','W3','W4','NUV','FUV‘的大小的预测值,但我总是遇到错误

代码语言:javascript
复制
Error in terms.formula(formula, data = data) : 
  '.' in formula and no 'data' argument

如果我将公式改为如下所示

代码语言:javascript
复制
model <- train(z~u, data = train.data, method = "knn",
    trControl = trainControl("cv", number = 10),
    preProcess = c("center","scale"),
    tuneLength = 10) # Gives error

我得到了

代码语言:javascript
复制
Error in eval(predvars, data, env) : 
  invalid 'envir' argument of type 'character'

我使用的是RStudio 1.3.959版本,而R版本是4.0.0。在谷歌上搜索错误,我会在neuralnet中找到相同错误的链接,但在caret中什么都没有。Here它看起来像是某些早期版本的R中有一个bug。

是什么导致了这个错误?

EN

回答 1

Stack Overflow用户

发布于 2020-06-29 13:50:55

您在数据分区中犯了错误。您在training.samples后面漏掉了一个",“。由于您没有提供任何数据,我使用的是iris数据

代码语言:javascript
复制
library(caret)
library(tidyverse)
# Randomly split the dataset into training and testing subsets
set.seed(123) # for reproducible randomness in producing training and test sets
training.samples <- createDataPartition(iris$Species ,p=0.5, list = FALSE)
train.data <- iris[training.samples,]
test.data <- iris[-training.samples, ]

train(Species~Sepal.Length, data = train.data, method = "knn",
      trControl = trainControl("cv", number = 10),
      preProcess = c("center","scale"),
      tuneLength = 10)

它不会给我任何错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62631846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档