2016-11-24 502 views
1

正從glmnet我的預測後,我試圖用「預測」功能,在「ROCR」軟件包,以獲取TPR無效,FPR等,但得到這個錯誤:ROCR錯誤:預測的格式爲

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) 

感謝您的幫助!

回答

7

主要問題是prediction對於predictionslabels參數都採用「矢量,矩陣,列表或數據幀」。儘管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通知我們

Note that factors are not vectors; ‘is.vector’ returns ‘FALSE’ and ‘as.vector’ converts a factor to a character vector for ‘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. 

不幸的是,它產生了一個超出這個問題範圍的不同問題。

+0

非常感謝您的詳細解釋。在您的幫助下,我能夠使用ROCR進行2級課程,並試圖找出如何解決> 2級課題。 – tacqy2

+0

樂於助人。如果答案解決了您的問題,請將其標記爲已接受。 –