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

如何使用来自不同CSV的变量在Python中执行多元线性回归

不同DataFrame特征做多元线性回归的实现方法

sklearn.linear_model.LinearRegression的fit方法对自变量的要求仅为行对应样本、列对应特征的二维结构,和特征是否来自同一个CSV/DataFrame没有关系,只要保证所有特征的样本顺序(此处对应年份)完全对齐即可。


第一步:修正原始代码的笔误

你现有代码里存在变量名引用错误的问题,先修正为可运行的版本:

import pandas as pd
from sklearn import linear_model
import numpy as np

# 读取处理Y数据
Y1 = pd.read_csv(r'C:\Y.csv') 
Y1 = pd.DataFrame(Y1, columns=['Year','JJASON','JJA','JAS','ASO','SON'])
Y1 = Y1[Y1['Year'].between(1984,2020, inclusive="both")]

# 读取处理X1数据
X1 = pd.read_csv(r'C:\X1.csv') 
X1 = pd.DataFrame(X1, columns=['Year','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'])
X1 = X1[X1['Year'].between(1984,2020, inclusive="both")]

# 读取处理X2数据
X2 = pd.read_csv(r'C:\X2.csv', na_values='NaN') 
X2 = pd.DataFrame(X2, columns=['Year','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'])
X2 = X2[X2['Year'].between(1984,2020, inclusive="both")]

第二步:提取目标字段并拼接自变量

按照要求取X1、X2的3月数据作为特征,Y1的JJASON列作为因变量:

# 校验三个数据集的年份完全对齐,避免样本不匹配
assert (X1['Year'].values == Y1['Year'].values).all()
assert (X2['Year'].values == Y1['Year'].values).all()

# 提取两个自变量并拼接为二维特征矩阵
X = pd.concat([X1['Mar'], X2['Mar']], axis=1).values
# 提取因变量
Y = Y1['JJASON'].values

第三步:拟合多元线性回归

和单变量回归的调用逻辑完全一致:

regr = linear_model.LinearRegression()
regr.fit(X, Y)

# 查看回归结果
print(f'回归系数(分别对应X1 3月、X2 3月的影响权重):{regr.coef_}')
print(f'回归截距:{regr.intercept_}')
print(f'模型拟合R²得分:{regr.score(X, Y)}')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:45:02