首页 > 解决方案 > Wide_deep 分类器模型,需要预测概率值,而不只是“最佳猜测”

问题描述

由于我在 SO 上获得了很多帮助,我确实构建了一个基于广泛而深入的 Tensorflow 教程的二进制分类器(这里是这个问题所指的它的“主”文件),仅在“宽”中使用模式。

我用来提取分类猜测的函数是:

  pred_iter = model.predict(input_fn=lambda: input_fn(FLAGS.test_data, 1, False, 1))   for pred in pred_iter:
    print(pred['classes'])

它在分类方面效果很好,但分类只是作为 a0或 a返回1,因此缺乏概率方面。

我想将分类表示为 0 到 1 之间的数字,以便了解网络对其猜测的“确定性”。

介绍本身

我们将训练一个逻辑回归模型,给定一个人的信息,我们的模型将输出一个介于 0 和 1 之间的数字,这可以解释为概率 [...]

但我无法获得预测的这种概率方面。

我曾尝试使用许多答案中列出的prob_a函数,但它可能指的是旧版本的TF,所以没有运气。

我怎样才能有效地将分类作为概率而不是“一次”?

任何帮助表示赞赏。

我在 Python 3.5、操作系统 Ubuntu 16.04 LTS 上使用 TF 1.8。

标签: pythontensorflowubuntu-16.04python-3.5

解决方案


tf.estimator.LinearClassifier实例返回您可以使用的值字典。您仅pred[ 'classes' ]在代码中使用,但您的概率值也在pred[ 'probabilities' ]. 你也可以

print( pred )

这将输出与此类似的内容(带有虚拟数据):

{'logits':数组([1.4264423],dtype=float32),
'logistic':数组([0.80634636],dtype=float32),
'概率':数组([0.19365363,0.80634636],dtype=float32),
'class_ids ':数组(1),
'类':数组([b'1'],dtype=object)}

所以你可以看到你也可以访问logitsand class_ids

1 类的概率是 中的第二个值pred[ 'probabilities' ],据我所知,这是您想要使用的值。


推荐阅读