线性回归中的梯度下降法,可视化梯度下降过程代码
时间: 2024-09-19 19:17:03 浏览: 47
Python实现多元线性回归方程梯度下降法与求函数极值
线性回归中的梯度下降法是一种常用的优化算法,用于最小化损失函数(通常选择均方误差)。它的工作原理是从初始猜测点开始,通过计算损失函数对模型参数的偏导数(梯度),然后沿着这个方向更新参数值,逐步接近全局最优解。这个过程会重复迭代,直到达到预设的停止条件,比如达到一定的迭代次数或者梯度变得足够小。
为了可视化梯度下降过程,我们可以使用Python的matplotlib库来模拟二维空间中的优化路径。这里是一个简单的例子,假设我们有一个一维线性回归模型:
```python
import numpy as np
import matplotlib.pyplot as plt
# 假设数据是随机生成的一组(x, y)点
x = np.array([0, 1, 2, 3])
y = np.array([1, 3, 2, 4])
# 初始化权重w和学习率α
w = np.random.randn()
alpha = 0.01
epochs = 100
# 定义梯度下降函数
def gradient_descent(x, y, w, alpha):
m = x.shape[0]
dw = (1/m) * (-2 * np.dot(x.T, (y - np.dot(x, w))))
return w - alpha * dw
# 记录每个迭代点
gradient_history = [w.copy()]
for _ in range(epochs):
w = gradient_descent(x, y, w, alpha)
gradient_history.append(w)
# 可视化路径
plt.figure(figsize=(8, 6))
plt.plot(range(len(gradient_history)), gradient_history, label='Gradient Descent Path')
plt.scatter(x, y, c='red', label='Training Data Points')
plt.xlabel('Iterations')
plt.ylabel('Weight w')
plt.title('Visualization of Gradient Descent in Linear Regression')
plt.legend()
plt.show()
阅读全文