【无标题】R语言 cutoff

http://t.csdn.cn/3t5Po

library(pROC)

# label: 金标准,0 1 变量

# pred: 模型预测值,连续变量

 

# 方法一

cal_metrics <- function(label, pred){

  roc.p=pROC::roc(label, pred)

  if (roc.p$auc>0.5){

    cutoff=roc.p$thresholds[which.max(roc.p$sensitivities+roc.p$specificities)]

    sensitivity=roc.p$sensitivities[which.max(roc.p$sensitivities+roc.p$specificities)]

    specificity=roc.p$specificities[which.max(roc.p$sensitivities+roc.p$specificities)]

    df=data.frame(type='positive classification',

                  auc=round(roc.p$auc,3),cutoff=cutoff,

                  sensitivity=sensitivity,specificity=specificity)

    return(df)

  }

  else{

    cutoff=roc.p$thresholds[which.min(roc.p$sensitivities+roc.p$specificities)]

    sensitivity=roc.p$sensitivities[which.min(roc.p$sensitivities+roc.p$specificities)]

    specificity=roc.p$specificities[which.min(roc.p$sensitivities+roc.p$specificities)]

    df=data.frame(type='negative classification',

                  auc=1-round(roc.p$auc,3),cutoff=cutoff,

                  sensitivity=1-sensitivity,specificity=1-specificity)

    return(df)

  }

}

 

# 方法二:

roc.p=pROC::roc(label, pred)

cutoff=roc.p$thresholds[which.max(roc.p$sensitivities+roc.p$specificities)]

 

pred_b = as.integer(pred > cutoff)

cft = table(pred_b, label)

 

cm = confusionMatrix(cft, positive = "1", mode = "everything")

paste0('cutoff: ', cutoff)

print(roc.p$auc)

print(cm)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值