python - 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。
解决方案
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)}
所以你可以看到你也可以访问logits
and class_ids
。
1 类的概率是 中的第二个值pred[ 'probabilities' ]
,据我所知,这是您想要使用的值。
推荐阅读
- mysql - 如果我有多行并且 SQL 中的字符串长度不同,如何将字符串分成列?
- c++ - 使用新进程启动新的 mac 终端窗口
- symfony - 更改 FOS 用户连接属性
- ruby - 如何使用服务器上的其他用户运行 Rails 应用程序?
- youtube-api - 如何通过 playlistItens 捕捉 VEVO 视频?
- amazon-web-services - 无法在 Go 代码中获取 AWS EKS 集群的 kubeconfig
- git - 如何对仅包含二进制文件的目录进行版本控制?
- javascript - 检查对象中是否存在对象键 - javascript
- angular - 在 Angular 中使用 for 循环调用 API
- android - libVLCsharp.forms 无法播放 Android 资源视频文件,而 iOS 可以