首页 文章

R-Caret回归问题中的“错误的分类模型类型”

提问于
浏览
3

我试图使用R中Caret包中的各种预测算法来回归问题,即我的目标变量是连续的 . Caret认为分类是问题的合适类,当我通过任何回归模型时,我收到一条错误消息,上面写着"wrong model type for classification" . 为了重现性,让我们看看Combined Cycle Power Plant Data Set . 数据在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)

下面的图片是我的截图:

enter image description here

1 回答

  • 1

    出于某种原因, caret 被tibbles弄糊涂了,这是 read_excel 返回的数据帧的tidyverse变体 . 通过在将其转换为插入符号之前将其转换为简单的数据帧,一切正常:

    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
    

相关问题