Я пытаюсь написать функцию, которая вычисляет 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.