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
相关产品推荐
相关产品推荐

