Python怎么做线性回归_statsmodels与sklearn单变量回归
Python线性回归常用statsmodels与sklearn,两者因变量与自变量维度要求相反,截距处理方式不同,预测时易因维度不匹配报错。statsmodels侧重统计推断,提供详细统计信息;sklearn侧重快速部署,简洁高效。使用时需注意数据形状与索引对齐,避免报错。
做线性回归,Python 里最常用的两套工具就是 statsmodels 和 sklearn。很多新手(甚至老手)在切换使用时,经常被一些看似微小的细节卡住:报错说维度不对、截距莫名其妙多了一个、预测时特征数不匹配……今天就把这些最常见的坑一次性说清楚,顺便把两个库的核心差异也理一理。

statsmodels 的 OLS 为什么总报 ValueError: endog must be 1-dimensional
这个错误几乎天天有人问。原因很简单:statsmodels.api.OLS 要求因变量(endog)必须是严格的一维数组,而你传进去的恰恰是 shape 为 (n, 1) 的二维结构——最常见的就是用了 df[['y']] 而不是 df['y'],或者从 sklearn 那边拿过来的数据没做压平处理。
- 正确做法:用
y = df['y'].values.ra vel()或y = df['y'].squeeze(),确保y.shape == (n,)。 - 如果用的是 pandas,
df['y']返回的是 Series,天然一维;而df[['y']]返回的是 DataFrame,二维——这个区别很多人一开始没留意。 - 另外,
OLS不会自动对齐索引。如果X和y的索引不一致(比如删过行),结果会静默错位,建议先reset_index(drop=True)再建模。
sklearn 的 LinearRegression 需不需要手动加截距项
不需要。默认就带截距(fit_intercept=True),而且它把截距当参数单独学,不在 X 里拼一列 1。这一点和 statsmodels 的思路完全不同。
- 如果你手动在
X前面加了一列np.ones(n),又没关掉fit_intercept,模型会拟合出两个截距项,结果完全不可靠。 - 想强制过原点?设
fit_intercept=False,这时才需要确认X里没有冗余的常数列。 - 注意:
sklearn要求输入X必须是二维(哪怕只有一个特征也要用reshape(-1, 1)),而y是一维——这和statsmodels的要求刚好相反,切换时最容易搞混。
预测时 predict() 报 ValueError: X has 1 features, but LinearRegression is expecting 2 features
这说明训练时 X 是二维(比如 df[['x']]),但预测时却传了一维数据(比如 [x0] 或 np.array([x0]))。
- 单样本预测要写成:
model.predict([[x0]])或model.predict(np.array([[x0]]))。 - 批量预测时,确保
X_new.shape[1]和训练时一致;用df[['x']].values比df['x'].values更安全,因为前者始终是二维。 statsmodels的predict()相对宽松些,能接受一维输入,但前提是你建模时用了add_constant()且维度匹配——很多人会漏掉这一步。
结果怎么看:sklearn 输出系数,statsmodels 输出完整统计表
两者定位不同。sklearn 给你 coef_ 和 intercept_,干净利落,适合快速部署和预测;statsmodels 的 summary() 则包含 t 值、p 值、R²、置信区间,更适合做推断和假设检验。
- 想快速上线?用
sklearn,.predict()直接可用,模型序列化也简单(joblib)。 - 要检验变量显著性、看残差分布、做假设检验?必须用
statsmodels,而且记得调用add_constant(X)再传给OLS。 - 两者 R² 的计算方式一致(都是解释方差占比),但
statsmodels默认报告调整 R²(Adj. R-squared),更严谨。
实际用的时候,最常卡住的真不是公式理解,而是维度对不上、索引没对齐、还有那个神出鬼没的常数列。多打两次 shape 和 ndim,比硬猜快得多。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。
CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。
Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。
Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。
CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。


























