Ошибка функции прогнозирования пакета ROCR: количество прогнозов в каждом прогоне должно быть равно количеству меток для каждой ошибки ru - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь написать функцию, которая вычисляет RO C AU C и PR AU C для набора предсказаний модели, но получаю следующее:

Ошибка в предсказание (gnations_probs, true): число прогнозов в каждом прогоне должно быть равно количеству меток для каждого прогона.

, даже если оба входа имеют одинаковую длину. Запуск кода функции за пределами функции также работает нормально. Только когда я запускаю код внутри функции, код жалуется. В чем может быть проблема?

Представляет:

library(PRROC)
library(ROCR)

predictions_prob_xgboost_test <- c(0.1, 0.2, 0.3, 0.6)
true_test <- c(0, 0, 1, 1)

typeof(predictions_prob_xgboost_test)
typeof(true_test)

length(predictions_prob_xgboost_test)
length(true_test)

roc_pr_auc_calc <- function(prediction_probs, true){

  # Calculate the ROC curve
  pred <- prediction(predictions_probs, true)
  rocs <- performance(pred, "tpr", "fpr")

  # get AUC value for each model
  auc_ROCR <- performance(pred, measure = "auc")
  roc_auc <- auc_ROCR@y.values

  roc_auc

  fg <- predictions_probs[true == 1]
  bg <- predictions_probs[true == 0]

  # PR Curve
  pr <- pr.curve(scores.class0 = fg, scores.class1 = bg, curve = T)

  pr_auc <- pr$auc.integral
  pr_auc

  return(list(roc_auc, pr_auc))
}

roc_pr_auc_calc(prediction_probs = predictions_prob_xgboost_test, true = true_test )

Вывод:

[1] "double"
[1] "double"
[1] 4
[1] 4
Error in prediction(predictions_probs, true) : Number of predictions in each run must be equal to the number of labels for each run.
...