python随机梯度下降法的编程
时间: 2023-11-25 22:08:05 浏览: 73
随机梯度下降法python实现
以下是使用Python实现随机梯度下降法的基本步骤:
1. 定义损失函数:定义目标函数和代价函数,常见的目标函数包括线性回归、逻辑回归等。
2. 初始化参数:对于线性模型,初始化权重向量;对于逻辑回归模型,初始化权重向量和偏差。
3. 随机化样本顺序:每次迭代时,随机打乱样本顺序,以避免过拟合。
4. 遍历样本:对于每个样本,计算梯度并更新参数。
5. 重复迭代:重复 3 和 4 步直到满足停止条件。
以下是一段使用随机梯度下降法实现线性回归的Python代码示例:
```python
import numpy as np
def sgd(X, y, w, lr, epochs):
n_samples, n_features = X.shape
for epoch in range(epochs):
for i in range(n_samples):
# 随机选择一个样本
index = np.random.randint(0, n_samples)
xi = X[index]
yi = y[index]
# 计算梯度
grad = xi.dot(w) - yi
# 更新权重向量
w = w - lr * xi * grad
return w
# 生成测试数据
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 初始化权重向量
w = np.random.randn(1)
# 使用随机梯度下降法训练线性回归模型
w = sgd(X, y, w, lr=0.01, epochs=100)
# 打印训练结果
print("权重向量:", w)
```
在上面的代码中,我们首先生成了 100 个带有随机噪声的一元线性回归数据,然后通过随机梯度下降法训练了线性回归模型,最终输出了训练得到的权重向量。
阅读全文