混淆矩阵中的模型精度为0% [重复]

我正在使用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_matrixX=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       706weighted avg       0.76      0.87      0.81       706
confusion_matrix (y_test, predictions) # 不预测0array([[  0,  92],       [  0, 614]], dtype=int64)

我想知道是否有错误影响了我的结果。


回答:

您的混淆矩阵:

[  0,  92][  0, 614]

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

看起来无论您向分类器输入什么数据,它都只会输出1。

在没有看到您的数据的情况下,我们只能猜测问题出在哪里…

要么您的数据不包含足够的信息来预测标签,您的分类器只是“猜测”最常见的类别。要么您有太多类别1的数据而类别0的数据太少,以至于准确率在总是猜测1时会更好,而不是试图正确分类。

您可以尝试做以下几件事:

1.) 您可以尝试从数据中删除一些类别1的元素,以便训练集中类别1和类别0的数据行数量相同。(或者从其他地方获取更多类别0的数据)

2.) 对于您的数据,可能其他分类器比逻辑回归更适合,您可以尝试决策树/SVM/Adaboost/…等,看看结果如何。

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注