ROC曲线tf.contrib.learn.LinearClassifier

时间:2017-07-27 10:28:13

标签: tensorflow

我想绘制我训练的User的ROC曲线。

当鉴别阈值发生变化时,ROC曲线显示TPR和FPR的不同值,但鉴别阈值始终为0.5。

我看不出如何告诉tf.contrib.learn.LinearClassifier更改它,或者记录TPR和FPR的不同阈值。

1 个答案:

答案 0 :(得分: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)
        }

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

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

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