梯度下降法,python实现
时间: 2024-11-19 22:16:27 浏览: 15
梯度下降法 Python 实现
梯度下降法是一种常用的优化算法,在机器学习中用于寻找函数最小值,尤其是损失函数对模型参数的最小化。它通过迭代地沿着负梯度方向更新参数,每次移动的步长由学习率决定,直至达到局部最优解。
在Python中,可以利用NumPy库来实现梯度下降。以下是一个简单的线性回归模型的梯度下降例子:
```python
import numpy as np
# 假设我们有一个二维数据集,目标是拟合一条直线
def linear_regression(x_data, y_data, learning_rate=0.01, num_iterations=1000):
# 初始化权重向量
weights = np.random.randn(2) # 假设是一维的,对于二维数据需要(1, 2)
for _ in range(num_iterations):
# 前向传播计算预测值
predictions = np.dot(x_data, weights)
# 计算误差的梯度
error_gradient = (predictions - y_data).mean() * x_data
# 更新权重
weights -= learning_rate * error_gradient
return weights
# 示例数据
x_data = np.array([[1], [2], [3]])
y_data = np.array([2, 4, 6])
# 调用函数并打印结果
optimal_weights = linear_regression(x_data, y_data)
print("Optimal weights:", optimal_weights)
```
在这个示例中,`linear_regression`函数首先初始化权重,然后在循环中不断根据当前权重计算预测值和误差,接着计算误差梯度并更新权重,直到达到指定次数的迭代。
阅读全文