[英]Error in terms.formula(formula) : '.' in formula and no 'data' argument
[英]When using `caret` for kNN, I get “Error in terms.formula(formula, data = data) : '.' in formula and no 'data' argument”
我正在嘗試使用caret
為某些數據的 kNN 分析找到最佳k
:
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)
我的目標是根據列“u”、“g”、“r”、“i”、“z_mag”、“I”、“J”、“H”、“K”的幅度值來測試z
的預測','W1','SPIT_5','W2','SPIT_8','W3','W4','NUV','FUV',但我一直遇到錯誤
Error in terms.formula(formula, data = data) :
'.' in formula and no 'data' argument
如果我將公式更改為類似
model <- train(z~u, data = train.data, method = "knn",
trControl = trainControl("cv", number = 10),
preProcess = c("center","scale"),
tuneLength = 10) # Gives error
我明白了
Error in eval(predvars, data, env) :
invalid 'envir' argument of type 'character'
我正在使用 RStudio v 1.3.959 和 R v 4.0.0 谷歌搜索錯誤給了我指向neuralnet
網絡中相同錯誤的鏈接,但caret
中沒有。 在這里,R 的某些早期版本中似乎存在錯誤。
是什么導致了錯誤?
您在數據分區中犯了一個錯誤。 在training.samples
之后,您錯過了一個“,”。 由於您沒有提供任何數據,我正在使用iris
數據
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)
它沒有給我任何錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.