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

基于含300列的Pandas DataFrame进行线性回归求β1系数

最优实现方案

1. 数据预处理:筛选目标温度区间

首先从DataFrame中提取外界温度在2到3.5之间的子集:

filtered_df = df[(df['temperature'] >= 2) & (df['temperature'] <= 3.5)].copy()

2. 高效计算单变量线性回归的ß₁系数

单变量线性回归中,斜率ß₁有直接解析公式,无需迭代拟合,能利用Pandas向量化操作一次性计算所有设备的系数,效率最高:

ß₁ = 协方差(x,y) / 方差(x) = [(x - x̄)(y - ȳ)的均值] / [(x - x̄)²的均值]

对应代码实现:

# 计算温度的均值与偏差
x = filtered_df['temperature']
x_mean = x.mean()
x_dev = x - x_mean

# 计算所有设备产热量的均值与偏差
y_cols = filtered_df.drop('temperature', axis=1)
y_dev = y_cols - y_cols.mean()

# 批量计算每台设备的ß₁
beta1 = (x_dev.values.reshape(-1, 1) * y_dev).mean() / (x_dev ** 2).mean()

最终beta1是一个Series,索引为设备名称,值对应每台设备的ß₁系数。

3. 备选:Scikit-learn批量处理(适合多变量扩展)

如果后续需要扩展到多变量回归,可使用Scikit-learn的线性回归模型结合apply操作,代码通用性更强:

from sklearn.linear_model import LinearRegression

# 构造特征矩阵
X = filtered_df[['temperature']].values
model = LinearRegression(fit_intercept=True)

# 定义单设备系数计算函数
def calc_beta1(y):
    model.fit(X, y.values)
    return model.coef_[0]

# 批量计算所有设备的ß₁
beta1_sklearn = y_cols.apply(calc_beta1)

方案对比

  • 解析公式法:纯Pandas向量化运算,无循环,计算速度最快,代码简洁且无额外依赖,是单变量场景的最优选择。
  • Scikit-learn法:代码更通用,支持后续多变量扩展,但因需循环拟合模型,效率略低于解析公式法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:51:32