"Неправильный тип модели для классификации" в задачах регрессии в R-Caret

Я пытаюсь использовать различные алгоритмы прогнозирования из пакета Caret в R для решения проблемы регрессии, которая является моей целевой переменной непрерывной. Карет считает, что классификация является подходящим классом проблемы, и когда я прохожу любую из регрессионных моделей, я получаю сообщение об ошибке, в котором говорится "неправильный тип модели для классификации". Для воспроизводимости, давайте посмотрим с набором данных электростанции с комбинированным циклом. Данные находятся в CCPP.zip. Давайте прогнозировать мощность как функцию от других переменных. Мощность - это постоянная переменная.

  library(readxl)
  library(caret)
  power_plant = read_excel("Folds5x2_pp.xlsx")
  apply(power_plant,2, class)   # shows all columns are numeric

  control <- trainControl(method="repeatedcv", number=10, repeats=5)

  my_glm <- train(power_plant[,1:4], power_plant[,5],
           method = "lm",
           preProc = c("center", "scale"),
            trControl = control)

Изображение ниже - мой скриншот:

введите описание изображения здесь

2 ответа

Решение

По какой-то причине caret получает путаницу, которая является tidyverse вариант фрейма данных, который read_excel возвращается. Преобразуя его в простой фрейм данных, прежде чем дать ему каретку, все работает:

library(readxl)
library(caret)
power_plant = read_excel("Folds5x2_pp.xlsx")
apply(power_plant,2, class)   # shows all columns are numeric

power_plant <- data.frame(power_plant)
control <- trainControl(method="repeatedcv", number=10, repeats=5)

my_glm <- train(power_plant[,1:4], power_plant[,5],
                method = "lm",
                preProc = c("center", "scale"),
                trControl = control)

my_glm

получая:

Linear Regression 

9568 samples
   4 predictor

Pre-processing: centered (4), scaled (4) 
Resampling: Cross-Validated (10 fold, repeated 5 times) 
Summary of sample sizes: 8612, 8612, 8611, 8612, 8612, 8610, ... 
Resampling results:

  RMSE      Rsquared 
  4.556703  0.9287933

Tuning parameter 'intercept' was held constant at a value of TRUE

Я получаю аналогичную ошибку, когда пытаюсь использовать формулу = y ~ x, отлично работает, просто опуская указанную переменную и используя y ~ x.

Другие вопросы по тегам