You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

线性回归代码异常求助:模型输出不符及predict报错问题

关于线性回归的两个常见问题解答

嘿,作为编程新手刚接触机器学习,遇到这俩问题太正常啦,我来给你掰扯清楚:

问题1:reg.fit() 输出简化的原因

你提到执行 reg.fit(df[['area']],df.price) 后,实际输出是 LinearRegression() 而非预期的带全参数的版本,这完全不是错误,只是scikit-learn版本差异导致的显示变化:

  • 旧版本的scikit-learn会在打印模型实例时显示所有参数(包括默认值),也就是你预期的 LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False);
  • 新版本(大概v0.23之后)做了优化,只显示非默认参数,因为你的模型用的全是默认配置,所以就简化成了 LinearRegression()。

如果你想确认所有参数的取值,可以运行这个命令查看:

print(reg.get_params())

输出会包含所有参数的具体值,能验证模型确实是按默认配置训练的。

问题2:predict() 必须用二维数组的原因

scikit-learn的所有模型预测方法(包括线性回归的predict),输入都要求是二维数组,这是因为模型设计时就支持多特征的场景(比如同时用房屋面积、卧室数量两个特征预测房价):

  • 你输入的 3300 是一个一维的标量/数组,模型会把它理解成「1个特征,3300个样本」,这和你的数据逻辑(1个样本,1个特征:面积3300)完全不符,所以会报错;
  • 而 [[3300]] 是一个形状为 (1, 1) 的二维数组,意思是「1个样本,1个特征」,正好匹配模型训练时的输入格式(你训练时用的 df[['area']] 也是二维的DataFrame,本质就是二维数组)。

举个例子,如果以后你用两个特征(比如area和bedrooms)训练模型,预测时就要这么传参:

reg.predict([[3300, 2]])  # 表示面积3300,卧室2间的样本

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 00:22:34