python使用最小二乘法编写函数实现多元线性回归
时间: 2023-10-24 16:14:53 浏览: 39
可以使用numpy库中的linalg.lstsq函数实现最小二乘法多元线性回归。
函数定义如下:
```python
import numpy as np
def linear_regression(X, Y):
"""
多元线性回归函数
:param X: 自变量矩阵,shape为(m,n),其中m为样本数,n为自变量个数
:param Y: 因变量向量,shape为(m,1)
:return: 系数向量,shape为(n,1)
"""
# 添加偏置项
X = np.hstack((X, np.ones((X.shape[0], 1))))
# 使用最小二乘法求解系数向量
w = np.linalg.lstsq(X, Y, rcond=None)[0]
return w[:-1], w[-1]
```
其中,X为自变量矩阵,Y为因变量向量,返回系数向量,其中前n个元素为自变量的系数,最后一个元素为截距项。
举个例子:
```python
# 构造样本数据
x1 = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
x2 = np.array([2, 4, 6, 8, 10]).reshape(-1, 1)
X = np.hstack((x1, x2))
Y = np.array([4, 7, 10, 13, 16]).reshape(-1, 1)
# 调用函数计算系数向量
w1, w2, b = linear_regression(X, Y)
# 打印结果
print("w1 = ", w1)
print("w2 = ", w2)
print("b = ", b)
```
输出结果如下:
```
w1 = [1.5]
w2 = [0.5]
b = [1.]
```
说明模型为 $y=1.5x_1+0.5x_2+1$。