2016-11-24 8 views
1

, 나는 TPR을 얻기 위해 "ROCR"패키지에 "예측"기능을 사용하려고 무효 등 만이 오류를 얻을 :ROCR 오류 : 예측의 형식은 FPR, glmnet에서 내 예측을 받고 후

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

가장 큰 문제는 predictionpredictionslabels 인수에 대해 "벡터, 행렬, 목록 또는 데이터 프레임"을 사용한다는 것입니다. pred_glmnet_s5_3classy이 벡터처럼 보이지만, 이들은 벡터가 아닙니다. 우리는 numeric에 두 개체를 변환 할 수 있습니다

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"’.

우리에게 알려줍니다

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

자세한 설명을 주셔서 감사합니다. 나는 당신의 도움으로 2 학급을 위해 ROCR을 사용할 수 있었고> 2 학급 문제를 해결하는 방법을 찾아 낼 수있었습니다. – tacqy2

+0

도와 드리겠습니다. 답변으로 질문이 해결되면 동의라고 표시하십시오. –