如何在Python中实现基于矩阵运算的线性回归(含Pandas数据处理)
手动实现线性回归系数计算(基于公式β=(XᵀX)⁻¹XᵀY)
没问题,咱们直接用Python的numpy库来手动完成这个计算,完全按照你给出的公式来,步骤很清晰:
步骤1:导入必要的库
首先需要导入numpy,它能帮我们轻松处理矩阵转置、乘法和求逆这些操作:
import numpy as np
步骤2:定义你的数据集
把你给出的Y和X矩阵转换成numpy的数组格式,注意要保证维度正确(X是6行3列,Y是6行1列的列向量,这样矩阵运算才会合法):
# 响应变量Y Y = np.array([140, 150, 160, 135, 170, 180]).reshape(-1, 1) # 转成6x1的列向量 # 预测变量矩阵X X = np.array([ [1, 10, 1], [1, 15, 1], [1, 20, 1], [1, 12, 0], [1, 16, 0], [1, 20, 0] ])
步骤3:按照公式计算回归系数β
咱们一步步拆解公式:
- 计算X的转置
X.T - 计算
X.T @ X(矩阵乘法,numpy里@或者dot()都可以) - 求上述结果的逆矩阵
np.linalg.inv() - 计算
X.T @ Y - 最后把逆矩阵和
X.T @ Y相乘,得到β
代码实现如下:
# 计算X的转置 X_transpose = X.T # 计算XᵀX XtX = X_transpose @ X # 计算XᵀX的逆矩阵 XtX_inv = np.linalg.inv(XtX) # 计算XᵀY XtY = X_transpose @ Y # 计算回归系数β beta = XtX_inv @ XtY
步骤4:查看结果
打印β就能得到三个系数:
print("回归系数β:") print(f"β₀(截距): {beta[0][0]:.4f}") print(f"β₁(age的系数): {beta[1][0]:.4f}") print(f"β₂(gender的系数,male=1): {beta[2][0]:.4f}")
运行这段代码后,你就能得到符合公式的回归系数了。如果想验证一下,可以用X @ beta计算预测值,和原始Y对比看看差异。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

