python实现梯度下降,输出是最后一次迭代结果
时间: 2024-10-03 11:03:11 浏览: 22
在Python中,梯度下降是一种常用的优化算法,用于最小化函数的损失或成本。它通过沿着负梯度方向逐步调整模型参数来寻找最小值。下面是简单的线性回归梯度下降的示例,这里我们假设有一个函数`cost_function`计算损失,以及`gradient_descent`函数执行迭代:
```python
import numpy as np
def cost_function(x, y, w):
m = len(y)
return (1/(2*m)) * np.sum((y - np.dot(x, w))**2)
def gradient_descent(x, y, initial_w, learning_rate, num_iterations):
m = x.shape[0]
w = initial_w
for i in range(num_iterations):
dw = -(1/m) * np.dot(x.T, (y - np.dot(x, w))) # 计算梯度
w -= learning_rate * dw # 更新权重
return w # 返回最后的迭代结果
# 示例数据
x = np.array([[1], [2], [3], [4]])
y = np.array([2, 4, 6, 8])
initial_w = np.zeros(2) # 初始权重
learning_rate = 0.01
num_iterations = 1000
last_weights = gradient_descent(x, y, initial_w, learning_rate, num_iterations)
print(f"最终权重: {last_weights}")
```
这个例子中,`last_weights`就是经过多次迭代后的模型参数。注意实际应用时可能会包含一些额外的错误处理和数据预处理步骤。
阅读全文