【问题标题】:ROC curve tf.contrib.learn.LinearClassifierROC 曲线 tf.contrib.learn.LinearClassifier
【发布时间】:2018-01-03 00:37:36
【问题描述】:

我想绘制我训练的tf.contrib.learn.LinearClassifier 的 ROC 曲线。

ROC曲线随着判别阈值的变化呈现出不同的TPR和FPR值,但判别阈值始终为0.5。

我不知道如何告诉LinearClassifier 更改它,或者记录不同阈值的 TPR 和 FPR。

【问题讨论】:

  • 使用predict_proba 自己做阈值。

标签: tensorflow


【解决方案1】:

我终于想通了。我需要添加一个自定义指标,例如:

def recall_fn(predictions=None, labels=None, weights=None):
  recall = tf.metrics.recall_at_thresholds(labels, predictions[:,1],[0.2,0.5,0.7])
  return recall

然后定义我的指标,例如:

with tf.variable_scope("metrics"):
   validation_metrics = {
     "recall":
        tf.contrib.learn.MetricSpec(
            metric_fn=recall_fn,
            prediction_key=tf.contrib.learn.PredictionKey.PROBABILITIES)
        }

最后在评估方法调用中使用它们:

results = m.evaluate(input_fn=lambda: chk_batch_input_fn(test_stream), 
   steps=100, metrics=validation_metrics)

不完全是 ROC 曲线,但它是我想要的反馈/指标。

【讨论】:

    猜你喜欢
    • 2019-12-26
    • 2019-02-27
    • 2014-07-20
    • 2012-05-02
    • 2018-04-25
    • 2019-02-09
    • 1970-01-01
    • 2020-04-18
    • 2017-02-05
    相关资源
    最近更新 更多