代入最小二乘法求解公式参数w代码
时间: 2024-12-20 18:24:27 浏览: 3
代入最小二乘法是一种线性回归分析中常用的参数估计方法,用于找到一组最佳拟合参数\( w \),使得预测值与真实观测值之间的误差平方和最小。对于一维线性回归模型 \( y = wx + b \),其中\( y \)是因变量,\( x \)是自变量,\( w \)是权重(斜率),\( b \)是截距,其数学表达式可以转化为:
\[ \min_{w,b} \sum_{i=1}^{n}(y_i - (wx_i + b))^2 \]
为了求解这个优化问题,我们通常会设置偏导数为0,然后求出\( w \)和\( b \)的解析解。这是一个关于\( w \)的一次方程组,对于每个\( i \),我们有:
\[ w = \frac{\sum_{i=1}^n x_i y_i - n\bar{x}\bar{y}}{\sum_{i=1}^n x_i^2 - n\bar{x}^2} \]
\[ b = \bar{y} - w\bar{x} \]
这里,\( \bar{x} \) 和 \( \bar{y} \) 分别是\( x \)和\( y \)的均值。
以下是用Python实现的简单版本:
```python
import numpy as np
def linear_regression(x, y):
# 计算均值
x_mean = np.mean(x)
y_mean = np.mean(y)
# 使用代入最小二乘法计算参数
numerator_w = np.sum(x * y) - len(x) * x_mean * y_mean
denominator_w = np.sum(x**2) - len(x) * x_mean**2
w = numerator_w / denominator_w
numerator_b = y_mean - w * x_mean
b = numerator_b
return w, b
# 示例数据
x_data = [1, 2, 3, 4, 5]
y_data = [2, 3, 4, 5, 6]
# 调用函数
slope, intercept = linear_regression(x_data, y_data)
print(f"斜率(w): {slope}, 截距(b): {intercept}")
```
阅读全文