混淆矩阵:真负数为 0 是啥意思?
Posted
技术标签:
【中文标题】混淆矩阵:真负数为 0 是啥意思?【英文标题】:Confusion matrix: What does it mean to have 0 value in true negative?混淆矩阵:真负数为 0 是什么意思? 【发布时间】:2020-05-03 06:34:09 【问题描述】:我正在使用逻辑回归处理客户流失预测数据集。该模型预测 95% 的准确率,但混淆矩阵给出以下输出:
array([[1517, 0],
[ 70, 0]], dtype=int64)
我怎样才能让模型也预测真阴性?
【问题讨论】:
看起来您的数据不平衡。你的训练数据中输出变量的比例是多少? 你能检查一下你的 Y_train 中是否有负类吗? @AkshayNevrekar 如何查看? 使用df["column_name"].value_counts()
这是训练数据中的比例:0 4810 1 267 名称:Churn,dtype:int64
【参考方案1】:
这是数据不平衡的典型问题。
您的逻辑分类只是预测一类(在本例中为 0 类),根本不考虑任何其他结果。
有大量的关键字/想法来解决这个解决方案,这超出了这里的范围。给你一些流行语:
过采样/欠采样 异常值检测 更改分类器优化问题这类问题没有基本的解决方案,你真的需要在那个话题上努力!
【讨论】:
【参考方案2】:我想补充一下 PV8 的回答,如上所述,这是一个高度不平衡的数据集。您可以查看不同的指标,例如ROC
、PR curve
、平衡准确度得分、stratified k fold cross validation
、调整类权重并尝试under/over sampling
。在进行抽样之前尝试其他提到的方法可能是个好主意。
由于您使用的是 scikit-learn,因此您可以同时使用不平衡学习包,https://imbalanced-learn.readthedocs.io/en/stable/install.html。它将为不平衡数据集提供各种欠/过采样算法、分类器、指标。
【讨论】:
以上是关于混淆矩阵:真负数为 0 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章