python 梯度下降法
时间: 2023-10-29 20:00:45 浏览: 142
梯度下降法是一种优化算法,用于寻找函数的最小值。它通过迭代的方式,通过计算函数的梯度(或导数)来指导搜索方向,并逐步调整参数以达到最小值。
在Python中,可以使用NumPy和Matplotlib库来实现梯度下降法。下面是一个示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义损失函数和其梯度
def loss_function(x):
return (x - 2.5)**2 - 1
def gradient(x):
return 2 * (x - 2.5)
# 初始化参数和学习率
x = 0
learning_rate = 0.1
iterations = 100
# 迭代更新参数
for i in range(iterations):
gradient_value = gradient(x)
x -= learning_rate * gradient_value
# 绘制损失函数曲线和最终结果
plot_x = np.linspace(-1, 6, 141)
plot_y = loss_function(plot_x)
plt.plot(plot_x, plot_y)
plt.scatter(x, loss_function(x), color='red', marker='x')
plt.show()
```
这个示例代码演示了如何使用梯度下降法在一个简单的二次函数中找到最小值点。首先定义了损失函数和其梯度,然后通过迭代更新参数来逐步接近最小值。最后,绘制了损失函数曲线并标记了最终的结果点。
注意,在实际应用中,可能需要对数据进行归一化处理,可以使用sklearn库中的StandartScaler类来实现。
希望这个示例代码能够帮助你理解Python中的梯度下降法。
阅读全文