帮我设计一个简单案例用梯度下降算法实现,写出其python代码
时间: 2024-09-07 10:01:57 浏览: 41
写一个最简单的深度学习案例:用神经网络算法预测中国的GDP总量
当然可以。让我们设计一个简单的线性回归案例来演示梯度下降算法。假设我们有一个数据集,包含两个特征 `x` 和 `y`,我们的任务是拟合一条直线,使得预测的 `y` 最接近实际的 `y` 值。
首先,我们需要导入必要的库并创建一些模拟数据:
```python
import numpy as np
# 创建模拟数据 (x, y)
np.random.seed(0) # 设置随机种子便于复现结果
m = 100 # 数据点的数量
b = 5 # 真实斜率
w_true = [1, b] # 真实权重
X = np.random.rand(m, 1) # 随机生成 x 的值,范围在 (0, 1)
y = X @ w_true + np.random.randn(m, 1) * 0.1 # 生成 y 值,考虑一些噪声
def hypothesis(X, w):
return X @ w
def compute_cost(y_pred, y):
mse = ((y_pred - y) ** 2).mean() # 平均平方误差
return mse
# 梯度下降的参数设置
learning_rate = 0.01
num_iterations = 1000
```
接下来,我们可以编写梯度下降的函数,按照上述步骤迭代:
```python
def gradient_descent(X, y, num_iterations, learning_rate):
m, _ = X.shape
w = np.zeros(2) # 初始权重为0
for i in range(num_iterations):
y_pred = hypothesis(X, w)
dw = (1 / m) * X.T @ (y_pred - y) # 求梯度
w -= learning_rate * dw # 更新权重
return w
w_final = gradient_descent(X, y, num_iterations, learning_rate)
print(f"最终得到的权重:{w_final}")
```
在这个例子中,我们实现了梯度下降算法来估计最佳权重 `w` 来拟合线性回归模型。运行这个代码会显示出优化后的斜率 `w[1]` 应该接近真实值 `b`。
阅读全文