python 实现梯度下降法
时间: 2023-11-08 12:04:21 浏览: 48
梯度下降法是机器学习中常用的优化算法,可以通过迭代来最小化损失函数。以下是使用 Python 实现梯度下降法的示例代码:
```
import numpy as np
# 定义损失函数
def loss_function(w, b, x, y):
N = len(x)
total_error = 0.0
for i in range(N):
total_error += (y[i] - (w * x[i] + b)) ** 2
return total_error / N
# 定义梯度下降函数
def gradient_descent(w, b, x, y, learning_rate, num_iterations):
N = len(x)
for i in range(num_iterations):
# 计算 w 和 b 的梯度
w_gradient = 0.0
b_gradient = 0.0
for j in range(N):
w_gradient += -2 * x[j] * (y[j] - (w * x[j] + b))
b_gradient += -2 * (y[j] - (w * x[j] + b))
# 更新 w 和 b
w -= (learning_rate * w_gradient) / N
b -= (learning_rate * b_gradient) / N
# 打印每次迭代后的损失函数值
if i % 100 == 0:
print("Iteration {}: Loss = {}".format(i, loss_function(w, b, x, y)))
return w, b
# 生成数据集
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
# 初始化 w 和 b
w = 0.0
b = 0.0
# 设置学习率和迭代次数
learning_rate = 0.01
num_iterations = 1000
# 进行梯度下降优化
w, b = gradient_descent(w, b, x, y, learning_rate, num_iterations)
# 输出最终的 w 和 b
print("Final w = {}, b = {}".format(w, b))
```
该示例代码实现了对线性模型的梯度下降优化,通过迭代更新参数 w 和 b,最小化损失函数。在代码中,我们先定义了损失函数和梯度下降函数,然后生成了一个简单的数据集,并使用梯度下降法对模型进行了优化。