Ошибка очень проста, зависимая переменная в test_data
содержит только один вид (virginica
). Таким образом, контрасты не могут быть применены. Расчет контрастов возможен только тогда, когда ваша зависимая переменная (в вашем случае это вид) имеет 2 или более уровней (например, versicolor
и virginica
или setosa
, versicolor
и virginica
). Чтобы добиться этого, вы можете изменить команду sample
, например
library(splines)
library(caret)
#> Warning: package 'caret' was built under R version 3.6.2
#> Loading required package: lattice
#> Loading required package: ggplot2
library(glmnet)
#> Warning: package 'glmnet' was built under R version 3.6.2
#> Loading required package: Matrix
#> Loaded glmnet 3.0-2
data(iris)
set.seed(123)
Inx <- sample(nrow(iris), 0.7 * nrow(iris))
iris$Species <- factor(iris$Species)
train_data <- iris[Inx, ]
test_data <- iris[-Inx,]
Formula <- "Sepal.Length ~ Sepal.Width + Petal.Length + Species:Petal.Width + Sepal.Width:Petal.Length + Species + bs(Petal.Width, df = 2, degree = 2)"
ModelMatrix <- predict(caret::dummyVars(Formula, train_data, fullRank = T, sep = ""), train_data)
y = train_data[,"Sepal.Length"]
cvglm <- cv.glmnet(x = ModelMatrix,y = train_data$Sepal.Length,nfolds = 4,
keep = TRUE, alpha = 1, parallel = F, type.measure = 'mse')
ModelMatrix_test <- predict(caret::dummyVars(Formula, test_data, fullRank = T, sep = ""), test_data)
. Лучше всегда разделять данные в наборах train
и test
таким образом, чтобы оба набора данных представляли исходный набор данных, который может быть получен путем случайной выборки.
Создан в 2020-04-30 пакетом Представить (v0.3.0)