梯度下降 python 画图
时间: 2023-10-29 16:56:57 浏览: 97
梯度下降是一种常用的优化算法,用于求解函数的最小值。在机器学习中,梯度下降常用于线性回归模型的参数更新过程。通过不断迭代调整参数,使得损失函数的值最小化。
在python中,可以使用matplotlib库来进行画图操作。具体步骤如下:
1. 首先,导入所需的库,包括numpy和matplotlib:
```python
import numpy as np
import matplotlib.pyplot as plt
```
2. 定义损失函数和梯度函数。对于线性回归,常用的损失函数是均方误差(MSE),梯度函数是对损失函数对参数的偏导数。
```python
def mse_loss(X, y, theta):
m = len(y)
predictions = X.dot(theta)
loss = np.sum((predictions - y) ** 2) / (2 * m)
return loss
def gradient(X, y, theta):
m = len(y)
predictions = X.dot(theta)
gradient = X.T.dot(predictions - y) / m
return gradient
```
3. 初始化参数并进行梯度下降迭代。在每次迭代中,更新参数并计算损失函数的值。
```python
def gradient_descent(X, y, theta, learning_rate, num_iterations):
losses = []
for i in range(num_iterations):
gradient_value = gradient(X, y, theta)
theta = theta - learning_rate * gradient_value
loss = mse_loss(X, y, theta)
losses.append(loss)
return theta, losses
# 初始化参数
theta = np.zeros((2, 1))
learning_rate = 0.01
num_iterations = 1000
# 进行梯度下降迭代
theta_final, losses = gradient_descent(X, y, theta, learning_rate, num_iterations)
```
4. 绘制损失函数随迭代次数的变化曲线。
```python
plt.plot(range(num_iterations), losses)
plt.xlabel('Iteration')
plt.ylabel('Loss')
plt.title('Gradient Descent: Loss vs Iteration')
plt.show()
```
通过以上步骤,我们可以在python中使用梯度下降算法进行线性回归,并用matplotlib库绘制损失函数随迭代次数的变化曲线。
阅读全文