为啥我的逻辑回归模型准确率达到 100%?

Posted

技术标签:

【中文标题】为啥我的逻辑回归模型准确率达到 100%?【英文标题】:Why am I getting 100% accuracy for my logistic regression model?为什么我的逻辑回归模型准确率达到 100%? 【发布时间】:2020-03-25 21:25:17 【问题描述】:

导入库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sklearn 
from sklearn import preprocessing
import seaborn as sns
%matplotlib inline

读取数据

 df =pd.read_csv('./EngineeredData_2.csv')
    df =df.dropna()

将数据拆分为 x 和 y:

X= df.drop (['Week','Div', 'Date', 'HomeTeam', 'AwayTeam','HTHG', 'HTAG','HTR', 
            'FTAG', 'FTHG','HGKPP', 'AGKPP', 'FTR'], axis =1)

将 y 转化为整数:

 L = preprocessing.LabelEncoder ()
    matchresults = L.fit_transform (list (df['FTR']))
    y =list(matchresults)

将数据拆分为训练和测试:

from sklearn.model_selection import train_test_split
X_tng,X_tst, y_tng, y_tst =train_test_split (X, y, test_size = 50, shuffle=False)
X_tng.head()

导入类

from sklearn.linear_model import LogisticRegression

实例化模型

logreg = LogisticRegression ()

用数据拟合模型

 logreg.fit (X_tng, y_tng)

预测测试数据 y_pred = logreg.predict (X_tst)

    acc = logreg. score (X_tst, y_tst)
    print (acc)

100% 的准确率有意义吗?

【问题讨论】:

如果问题足够简单,当然可以。结果也可能是由于处理数据时的错误造成的。但是,如果没有看到您的数据,没有人可以肯定地说。考虑从您的训练/验证集中包含一些样本 我们需要@LukasThaler 上面写的一些样本,但顺便说一句,你写的是:Split the data into x and y: 为什么你放弃了'Week','Div', 'Date', 'HomeTeam', 'AwayTeam','HTHG', 'HTAG','HTR', 'FTAG', 'FTHG','HGKPP', 'AGKPP', 'FTR',但你只使用了FTR 【参考方案1】:

问题是您无意中删除了所有功能,只保留了x 中的目标值。因此,您试图用目标值本身来解释目标值,这当然会给您 100% 的准确性。您将特征列定义为:

X= df.drop (['Week','Div', 'Date', 'HomeTeam', 'AwayTeam','HTHG', 'HTAG','HTR', 
            'FTAG', 'FTHG','HGKPP', 'AGKPP', 'FTR'], axis =1)

但您应该将它们定义为:

X= df.drop('FTR', axis =1)

【讨论】:

以上是关于为啥我的逻辑回归模型准确率达到 100%?的主要内容,如果未能解决你的问题,请参考以下文章

逻辑回归模型

使用逻辑回归进行特征选择

Sklearn逻辑回归 - 调整截止点

为啥逻辑回归分类器的准确率与 k 近邻不同? [关闭]

逻辑回归LR

为啥我的逻辑回归模型输出的因子不是 2 个水平? (错误:`data`和`reference`应该是相同级别的因素。)