python 梯度下降
时间: 2023-08-25 12:15:38 浏览: 105
在Python中,梯度下降(Gradient Descent)是一种常用的优化算法,用于求解函数的最小值。它通过迭代更新参数的方式来逐步接近最优解。
下面是一个简单的示例,展示了如何在Python中使用梯度下降算法:
```python
import numpy as np
def gradient_descent(X, y, learning_rate, num_iterations):
num_samples, num_features = X.shape
theta = np.zeros(num_features) # 初始化参数
for i in range(num_iterations):
# 计算梯度
gradients = (2/num_samples) * X.T.dot(X.dot(theta) - y)
# 更新参数
theta = theta - learning_rate * gradients
return theta
# 示例数据
X = np.array([[1, 3], [1, 4], [1, 5], [1, 6]])
y = np.array([5, 6, 7, 8])
# 设置学习率和迭代次数
learning_rate = 0.01
num_iterations = 1000
# 使用梯度下降算法求解最优参数
theta_optimal = gradient_descent(X, y, learning_rate, num_iterations)
print("最优参数:", theta_optimal)
```
在上述示例中,首先定义了一个 `gradient_descent` 函数,它接受输入数据 `X` 和目标值 `y`,学习率 `learning_rate`,以及迭代次数 `num_iterations`。函数通过迭代更新参数 `theta`,直到达到指定的迭代次数。
在每次迭代中,通过计算梯度(即目标函数关于参数的偏导数)来更新参数。最终,函数返回最优的参数 `theta_optimal`。
需要注意的是,梯度下降算法的性能受到学习率和迭代次数的选择影响。较小的学习率可能导致收敛速度较慢,而较大的学习率可能导致无法收敛或跳过最优解。因此,在实际应用中,需要进行参数调优以获得更好的结果。
阅读全文