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

使用Scikit-learn LinearRegression报错:__init__()参数错误

TypeError: init() takes 1 positional argument but 3 were given 问题解决

你的代码

x = df.TV
y= df.Sales

from sklearn.linear_model import LinearRegression

LinearRegression(x,y)

报错信息

TypeError                                 Traceback (most recent call last)
<ipython-input-12-ee125dd306e2> in <module>()
----> 1 LinearRegression(x,y)

TypeError: __init__() takes 1 positional argument but 3 were given

错误原因

  1. LinearRegression构造函数不接收特征与标签参数:LinearRegression()是模型的初始化方法,仅用于设置模型超参数(比如是否拟合截距fit_intercept等),根本不需要传入x和y。你直接把训练数据传给构造函数,属于传参逻辑错误。
  2. 特征输入维度不符合要求:即便后续调用训练方法,sklearn要求特征输入必须是二维特征矩阵,而df.TV返回的是一维Series,无法被模型识别为合法的特征输入。

修正后的代码

from sklearn.linear_model import LinearRegression

# 假设df已正确加载数据
x = df[['TV']]  # 用双层方括号将一维Series转为二维DataFrame
y = df.Sales

# 1. 先实例化模型对象
model = LinearRegression()
# 2. 调用fit方法传入训练数据完成模型训练
model.fit(x, y)

关键说明

  • sklearn模型的标准使用流程是:实例化模型 → 调用fit方法传入训练数据,切勿把数据直接传给构造函数。
  • 特征维度要求:所有sklearn监督学习模型的特征输入都需要是(样本数量, 特征数量)的二维结构,使用df[['列名']]是快速将单列数据转为二维结构的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:54:10