You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow中DNNClassifier预测概率含义咨询

关于DNNClassifier输出3个概率值的解释

嘿,我来帮你搞清楚这个困惑!你遇到的情况其实是因为你的DNNClassifier把任务当成了三分类任务来处理,但实际上你只有两个类别,所以第三个概率值对应的是一个几乎没有样本的“空类别”,具体原因和解决方法如下:

核心原因

你的分类器输出3个概率,是因为它识别到了3个类别索引——大概率是下面两种情况之一:

  • 你在初始化DNNClassifier时,没有明确设置n_classes=2,分类器自动从训练数据的标签里推断类别数量,而你的标签里可能不小心混入了第三个值(比如标签取值是0、1、2,但只有0和1有实际样本);
  • 或者你误将n_classes参数设成了3,导致分类器按三分类模式训练。

每个概率值对应的是对应类别索引的预测概率,比如你输出里的:

Prediction 1: [ 5.11678644e-02 9.48832154e-01 3.84762299e-37]
这里第一个值是类别0的概率(约5.1%),第二个是类别1的概率(约94.9%),第三个是类别2的概率(几乎为0,因为没有训练样本属于这个类别)。

验证与解决方法

你可以通过以下步骤确认并修正:

  • 检查DNNClassifier的初始化代码,确保设置了n_classes=2,比如:
    classifier = tf.estimator.DNNClassifier(
        feature_columns=feature_columns,
        hidden_units=[10, 20, 10],
        n_classes=2  # 明确指定二分类
    )
    
  • 运行print(classifier.classes_),这个属性会输出分类器识别到的所有类别列表,一眼就能看到它到底认为有几个类别;
  • 核对训练数据的标签列,确保所有标签只有两个不同的取值(比如0和1),没有多余的类别值混入。

这样调整后,你的预测输出就会变成只有两个概率值,分别对应你的两个实际类别啦!

内容的提问来源于stack exchange,提问作者Abigail Fox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:59:59