【问题标题】:R: xgboost plot roc curveR:xgboost 绘制 roc 曲线
【发布时间】:2016-02-04 17:27:46
【问题描述】:

绘制 roc 曲线:

library(ROCR)
<data cleaning/scrubbing>
<train data>
.....
.....
rf.perf = performance(rf.prediction, "tpr", "fpr") #for RF
logit.perf = performance (logit.prediction, "tpr", "fpr") #for logistic reg
tree.perf = performance(tree.prediction, "tpr", "fpr") #for cart tree
...
plot(re.perf) #a RF roc curve

如果我想运行 xgboost 分类并随后绘制 roc: 目标=“二进制:物流”

我对 xgboost 的参数 metrics "auc"CRAN manual 的第 9 页)感到困惑,它说的是面积。 如何用 tpr 和 fpr 绘制曲线进行模型比较?

我尝试在网络和github上搜索,最强调特征重要性图(xgboost)。

谢谢

【问题讨论】:

  • 澄清一下,AUC 是接收器操作曲线 (ROC) 曲线下的面积。这是一个介于 0-1 之间的度量。对我来说,你的问题并不完全清楚。我猜你只是想绘制 ROC 但这样做有困难吗?也许包括一个reproducible example,这可能会有所帮助。

标签: r plot machine-learning


【解决方案1】:

先说ROC曲线

ROC 曲线是通过在各种阈值设置下绘制真阳性率 (TPR) 与假阳性率 (FPR) 来创建的。

在python中可以很容易做到:

from sklearn import metrics
def buildROC(target_test,test_preds):
    fpr, tpr, threshold = metrics.roc_curve(target_test, test_preds)
    roc_auc = metrics.auc(fpr, tpr)
    plt.title('Receiver Operating Characteristic')
    plt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)
    plt.legend(loc = 'lower right')
    plt.plot([0, 1], [0, 1],'r--')
    plt.ylabel('True Positive Rate')
    plt.xlabel('False Positive Rate')
    plt.gcf().savefig('roc.png')

enter image description here

例如在上图中,在一定的阈值和假阳性率为 0.2 的代价下,我们可以得到接近 0.96 - 0.97 的真阳性

A good documentation on ROC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-27
    • 2021-03-03
    • 2013-08-10
    • 2012-01-01
    • 2017-09-11
    • 2020-08-15
    • 2019-02-05
    • 2016-12-26
    相关资源
    最近更新 更多