You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

多元线性回归获100%准确率存疑,请求代码合理性排查

多元线性回归得到100%准确率的问题排查

我在进行多元线性回归时得到了100%的准确率。我正在学习去年的一份教程,教程中使用相同模型并未获得100%准确率,但我却得到了,这让我感到困惑。以下是我的代码,请帮我判断做法是否正确,代码是否存在问题?

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dataset = pd.read_csv('M_Regression.csv')
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, :1].values
from sklearn.model_selection import train_test_split
X_train, x_test, Y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=0)
#regression
from sklearn.linear_model import LinearRegression
reg = LinearRegression()
reg.fit(X_train,Y_train)
#Prediction
y_pred = reg.predict(x_test)
print(str(y_test) + " - " + str(y_pred))

问题核心:目标变量提取错误

你代码里最关键的问题出在目标变量Y的提取方式上:

  • X = dataset.iloc[:, :-1].values 是取数据集里所有行、除最后一列外的所有列作为特征,这部分逻辑是对的
  • Y = dataset.iloc[:, :1].values 是取所有行的第一列作为目标变量——这就出问题了!你的特征X里已经包含了第一列,等于模型在学习“用第一列预测第一列”,这当然会得到100%的完美预测结果,完全失去了回归任务的意义。

修正方法

把Y的提取代码改成取最后一列(也就是数据集里真正的目标变量列):

Y = dataset.iloc[:, -1].values

其他小建议

  • 变量命名尽量保持一致:你现在混用了X_train(大写)和x_test(小写),容易混淆,建议统一成X_train, X_test, Y_train, Y_test或者全小写格式
  • 别用“准确率”评估线性回归:准确率是分类任务的专属指标,回归任务应该用均方误差(MSE)R²分数这类指标来衡量模型性能,比如可以用sklearn.metrics.r2_score(y_test, y_pred)来计算模型的拟合效果

这样修改后,你应该就能得到和教程类似的结果了~

内容的提问来源于stack exchange,提问作者Sidharth kaushik

火山引擎 最新活动