Python混淆矩阵中的模型精度为0%

Posted

技术标签:

【中文标题】Python混淆矩阵中的模型精度为0%【英文标题】:Model precision is 0% in Python confusion matrix 【发布时间】:2020-01-23 15:25:23 【问题描述】:

我正在尝试使用 Python 中的逻辑回归预测二元结果,而我的分类报告显示我的模型以 0% 的精度预测我的目标变量 = 0。它对我的目标变量 = 1 的预测精度为 87%

from sklearn.linear_model import LogisticRegression 
from sklearn.model_selection import train_test_split 
from sklearn.metrics import classification_report 
from sklearn.metrics import confusion_matrix

X=df[['RegDec', 'SchoolDiv', 'SEX', 'Honor', 'TestOptional', 'TERRITORY', 'AcadamicIndex',
     'INSTAward','NEED', 'TOTAWD', 'ETHN3', 'IR_Total', 'pell']]
y= df ['Retained']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)


logmodel = LogisticRegression()
logmodel.fit(X_train,y_train) 

predictions=logmodel.predict (X_test)
print (classification_report(y_test,predictions)) 

为什么我的精度为 '0' 0?这是输出

 precision    recall  f1-score   support

           0       0.00      0.00      0.00        92
           1       0.87      1.00      0.93       614

    accuracy                           0.87       706
   macro avg       0.43      0.50      0.47       706
weighted avg       0.76      0.87      0.81       706
confusion_matrix (y_test, predictions) # not predicting 0s

array([[  0,  92],
       [  0, 614]], dtype=int64)

我想知道我是否有一些错误会影响我的结果。

【问题讨论】:

我不确定。我在测试集中将其随机拆分为 20%。它可能只在该测试集中放置 1。有没有办法确保测试集同时包含 1 和 0?但是,CSV 文件包含 3,094 (1) 和 437 (0) 【参考方案1】:

你的混淆矩阵:

[  0,  92]
[  0, 614]

告诉你测试集中有 92 个 0 类元素和 614 个 1 类元素。

似乎无论您向分类器提供什么数据,它都会显示 1。

在没有看到您的数据的情况下,我们只能猜测出了什么问题......

您的数据要么没有“包含”足够信息来预测您的标签,而您的分类器只是“猜测”最常见的类别。或者,您的 1 类数据比 0 类数据多得多,如果您总是猜测 1 而不是尝试正确分类,那么准确度会更好。

你可以做的事情:

1.) 您尝试删除数据中的一些 1 类元素,以便在训练集中拥有相同数量的 1 类和 2 类数据行。 (或从某处获取更多 0 类数据)

2.) 也许对于您的数据,另一个分类器可能比逻辑回归更适合,您可以尝试决策树/svm/adaboost /... 并查看结果。

3.) 如果这是一个现实生活中的问题,您可以尝试使用更好的传感器、来自不同来源或通过特征工程获得更多更好的数据

【讨论】:

以上是关于Python混淆矩阵中的模型精度为0%的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Python 中的混淆矩阵中获取精度、召回率和 f 度量 [重复]

遥感软件中混淆矩阵是如何产生的

应用分层10折交叉验证时如何在python中获取所有混淆矩阵的聚合

Python hmmlearn中的混淆矩阵是怎么表示的

Confusion Matrix混淆矩阵

29、评估多分类问题--混淆矩阵和F分数