在从glmnet获得预测后,我尝试使用"ROCR“包中的"prediction”函数来获取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)
感谢您的帮助!
发布于 2016-11-24 20:08:55
主要的问题是,对于predictions
和labels
参数,prediction
都接受“向量、矩阵、列表或数据帧”。尽管pred_glmnet_s5_3class
和y
看起来像矢量,但它们不是,例如
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’返回‘FALSE’,‘as.vector’将因子转换为‘mode=“any”’的字符矢量。
我们可以将两个对象都转换为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.
不幸的是,它产生了一个不同的问题,这超出了这个问题的范围。
https://stackoverflow.com/questions/40783331
复制相似问题