为啥我的逻辑回归模型准确率达到 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%?的主要内容,如果未能解决你的问题,请参考以下文章