随机梯度下降最优化 python
时间: 2023-10-19 09:31:51 浏览: 97
随机梯度下降(Stochastic Gradient Descent,SGD)是一种常用的优化算法,用于求解机器学习和深度学习模型的参数。在Python中,可以使用NumPy库来实现SGD算法。
以下是一个使用Python实现SGD的示例代码:
```python
import numpy as np
def sgd(X, y, learning_rate=0.01, epochs=100):
# 初始化参数
theta = np.zeros(X.shape[1])
m = len(X)
# 迭代更新参数
for epoch in range(epochs):
# 随机打乱样本顺序
permutation = np.random.permutation(m)
X = X[permutation]
y = y[permutation]
# 遍历每个样本进行更新
for i in range(m):
xi = X[i]
yi = y[i]
# 计算预测值和误差
pred = np.dot(xi, theta)
error = pred - yi
# 更新参数
theta -= learning_rate * (2/m) * np.dot(xi.T, error)
return theta
```
在上述代码中,X是输入特征矩阵,y是对应的目标变量。learning_rate表示学习率,用于控制参数更新的步长。epochs表示迭代次数。函数通过随机打乱样本顺序来实现SGD的随机性。在每次迭代中,遍历所有样本并更新参数。
希望这个示例对你有帮助!如有任何问题,请随时提问。
阅读全文