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

时间:2019-09-23 14:16:03

标签: python classification logistic-regression predict confusion-matrix

我正在尝试使用Python中的逻辑回归来预测二进制结果,而我的classification_report显示我的模型对于目标变量= 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)

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

1 个答案:

答案 0 :(得分:0)

您的混淆矩阵:

[  0,  92]
[  0, 614]

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

似乎无论您使用什么数据输入分类器,它都显示为1。

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

您的数据都不“包含”足够的信息来预测标签,而分类器仅“猜测”了最频繁的课程。或者,您拥有的类别1的数据比类别0的多得多,因此如果您总是猜测1而不是尝试正确分类,则准确性会更高。

您可以做的事情:

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

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

3。)如果是现实生活中的问题,则尝试从不同来源或通过特征工程获取更多更好的数据,也许使用更好的传感器