【问题标题】:ROCR error: Format of predictions is invalidROCR 错误:预测格式无效
【发布时间】:2017-04-08 13:49:56
【问题描述】:

从 glmnet 获得我的预测后,我尝试使用“ROCR”包中的“预测”函数来获取 tpr、fpr 等,但出现此错误:

pred <- prediction(pred_glmnet_s5_3class, y)
Error in prediction(pred_glmnet_s5_3class, y) : 
Format of predictions is invalid.

我已经输出了 glmnet 预测和标签,它们看起来格式相似,因此我不明白这里有什么无效。

代码如下,输入可以在这里input找到。这是一个小数据集,运行时间应该不会太长。

library("ROCR")
library("caret")
sensor6data_s5_3class <- read.csv("/home/sensei/clustering /sensor6data_f21_s5_with3Labels.csv")
sensor6data_s5_3class <- within(sensor6data_s5_3class, Class <- as.factor(Class))
sensor6data_s5_3class$Class2 <- relevel(sensor6data_s5_3class$Class,ref="1")

set.seed("4321")
inTrain_s5_3class <- createDataPartition(y = sensor6data_s5_3class$Class, p = .75, list = FALSE)
training_s5_3class <- sensor6data_s5_3class[inTrain_s5_3class,]
testing_s5_3class <- sensor6data_s5_3class[-inTrain_s5_3class,] 
y <- testing_s5_3class[,22]

ctrl_s5_3class <- trainControl(method = "repeatedcv", number = 10, repeats = 10 , savePredictions = TRUE)
model_train_glmnet_s5_3class <- train(Class2 ~ ZCR + Energy + SpectralC + SpectralS + SpectralE + SpectralF + SpectralR + MFCC1 + MFCC2 + MFCC3 + MFCC4 + MFCC5 + MFCC6 + MFCC7 + MFCC8 + MFCC9 + MFCC10 + MFCC11 + MFCC12 + MFCC13, data = training_s5_3class, method="glmnet", trControl = ctrl_s5_3class)
pred_glmnet_s5_3class = predict(model_train_glmnet_s5_3class, newdata=testing_s5_3class, s = "model_train_glmnet_s5_3class$finalModel$lambdaOpt")

pred <- prediction(pred_glmnet_s5_3class, y)

感谢您的帮助!

【问题讨论】:

    标签: r r-caret proc-r-package


    【解决方案1】:

    主要问题是predictionpredictionslabels 参数都采用“向量、矩阵、列表或数据框”。尽管 pred_glmnet_s5_3classy 看起来像向量,但它们不是,例如

    sapply(c(is.vector, is.matrix, is.list, is.data.frame), do.call, list(y))
    # [1] FALSE FALSE FALSE FALSE
    

    其实都是因素(可以从例如class(y)看出),?is.vector通知我们

    注意因子是不是向量; “is.vector”返回“假” 和‘as.vector’将一个因子转换为‘mode’的字符向量 =“任何”'。

    我们可以将两个对象都转换为numeric

    pred <- prediction(as.numeric(pred_glmnet_s5_3class), as.numeric(y))
    #   Number of classes is not equal to 2.
    # ROCR currently supports only evaluation of binary classification tasks.
    

    不幸的是,它产生了一个不同的问题,超出了这个问题的范围。

    【讨论】:

    • 非常感谢您的详细解释。在您的帮助下,我能够将 ROCR 用于 2 类,并尝试找出如何解决 >2 类问题。
    猜你喜欢
    • 1970-01-01
    • 2017-01-21
    • 2014-02-12
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    相关资源
    最近更新 更多