【问题标题】:How to calculate true positive rate?如何计算真阳性率?
【发布时间】:2020-10-13 02:22:19
【问题描述】:

我制作了预测航班迟到的模型。我想看看真阳性率,假阳性率为 50%。我可以在我绘制的 ROC 曲线中看到这一点。但我想准确计算该值,而不仅仅是从图中读取它。有人知道怎么做吗?

library(modelr)
library(dplyr)
library(sparklyr)
library(ggplot2)
library(nycflights13)
data(flights)

RNGkind(sample.kind="Rounding")
set.seed(42)

flights <- mutate(flights, late_arrival = ifelse(arr_delay > 30, 1, 0))

spark_install()
sc <- spark_connect(master = "local")

flights_tbl <- copy_to(sc, flights, "flights")
flights_tbl <- flights_tbl %>% na.omit(flights_tbl)

partition <- flights_tbl %>% 
  select(late_arrival, carrier, dep_delay, month, year) %>%
  sdf_random_split(train = 0.75, test = 0.25)

train_tbl <- partition$train
test_tbl <- partition$test

########### my model
ml_formula <- formula(late_arrival ~ carrier + dep_delay + month + year)
ml_log <- ml_logistic_regression(train_tbl,ml_formula)
ml_log

pred_lr <- ml_predict(ml_log, test_tbl) %>% collect
pred_lr$p1 <- unlist(pred_lr$probability)[ c(FALSE,TRUE) ]

########## my ROC curve plot
ROC_lr <- get_roc(L = pred_lr$late_arrival, f = pred_lr$p1)
ggplot(ROC_lr, aes(x = FPR, y = TPR)) + geom_line(aes(col = "my prediction")) + ggtitle("ROC curve of my prediction", "logistic regression to predict late arrivals based on carrier, departure delay, month, and year")

【问题讨论】:

标签: r machine-learning roc


【解决方案1】:

我不熟悉get_roc(),但您当然可以打印出ROC_lr 以获取附近的一些值:

print(ROC_lr)

但是您可以尝试另一个包:包pROC 具有函数coords() 可以在某个点从ROC 曲线中计算值:

library(pROC)

# only some random values for example
labels <- c(0, 1, 0, 1, 0, 0, 0, 1, 0, 0)
scores <- 1:10

# instead of get_roc() you can use pROC::roc()
roc <- roc(labels, scores)

# let's say you want FPR 0.5 and calculate TPR
fpr <- 0.5

# coords() needs specificity (1 - FPR) to calculate sensitivity (TPR)
fpr50 <- coords(roc, 1 - fpr, input = "specificity")

# get TPR from the result
tpr <- fpr50$sensitivity

tpr
#[1] 0.6666667

【讨论】:

  • 谢谢,我会这样尝试的。我案中的标签和分数是什么?我有实际迟到的航班(1)或不(0)。对于这些航班中的每一个,我还有一个预测它们是否迟到(1/0)。 “标签”会是实际的航班状态 0/1 和“评分”我的预测 0/1 吗?我也可以使用我的预测概率。
  • @E_H 第一个参数将是迟到(0 或 1),第二个参数可以是概率(0.0 - 1.00),但您也可以使用预测(0 或 1)。如果您的机器学习模型输出概率,请使用概率,如果它的输出是预测类别,请使用预测类别。有关更多信息(参数、可能性等),请参阅文档。
猜你喜欢
  • 1970-01-01
  • 2016-02-03
  • 2017-01-25
  • 2022-01-17
  • 1970-01-01
  • 2022-12-29
  • 2018-08-21
  • 1970-01-01
  • 2023-01-18
相关资源
最近更新 更多