梯度下降法python 实现
时间: 2023-06-29 07:16:51 浏览: 94
好的,下面是一个简单的Python实现梯度下降法的示例:
```python
import numpy as np
def gradient_descent(X, y, theta, alpha, num_iters):
"""
X: 训练数据特征矩阵,m x n
y: 训练数据标签,m x 1
theta: 初始参数,n x 1
alpha: 学习率
num_iters: 迭代次数
"""
m = len(y)
for i in range(num_iters):
# 计算预测值和误差
h = np.dot(X, theta)
loss = h - y
# 计算梯度
gradient = np.dot(X.T, loss) / m
# 更新参数
theta = theta - alpha * gradient
return theta
```
这个函数接受训练数据的特征矩阵X,标签y,初始参数theta,学习率alpha和迭代次数num_iters作为输入,返回学习得到的参数theta。在每次迭代中,首先计算预测值和误差,然后计算梯度,最后更新参数。
相关问题
梯度下降法python实现
梯度下降法是一种常见的优化算法,可用于最小化损失函数。以下是一个简单的 Python 实现:
```
import numpy as np
def gradient_descent(X, y, theta, alpha, num_iters):
m = len(y)
for i in range(num_iters):
h = X.dot(theta)
loss = h - y
gradient = X.T.dot(loss) / m
theta = theta - alpha * gradient
return theta
```
其中,`X` 是一个 m×n 的特征矩阵,`y` 是一个 m×1 的目标向量,`theta` 是一个 n×1 的初始化参数向量,`alpha` 是学习率,`num_iters` 是迭代次数。
在每次迭代中,首先计算当前参数向量 `theta` 对应的预测值 `h`,然后计算预测值与目标值之间的误差 `loss`。接着,计算梯度 `gradient`,并将参数向量 `theta` 更新为 `theta - alpha * gradient`。
最后,返回更新后的参数向量 `theta`。
机器学习梯度下降法python实现
机器学习中的梯度下降法是一种常用的优化算法,用于求解损失函数的最小值。在Python中,可以使用NumPy和Matplotlib等库来实现梯度下降法。具体实现步骤如下:
1. 定义损失函数和梯度函数;
2. 初始化参数;
3. 设置学习率和迭代次数;
4. 循环迭代,更新参数,直到满足停止条件;
5. 可视化损失函数和参数更新轨迹。
下面是一个简单的梯度下降法实现的范例代码:
import numpy as np
import matplotlib.pyplot as plt
# 定义损失函数和梯度函数
def loss_function(x):
return (x - 2.5)**2 - 1
def gradient_function(x):
return 2 * (x - 2.5)
# 初始化参数
xi = 0
lr = 0.1
epochs = 20
# 设置学习率和迭代次数
trajectory = []
# 循环迭代,更新参数,直到满足停止条件
for i in range(epochs):
trajectory.append(xi)
xi = xi - lr * gradient_function(xi)
# 可视化损失函数和参数更新轨迹
plot_x = np.linspace(-1, 6, 141)
plot_y = loss_function(plot_x)
plt.plot(plot_x, plot_y)
plt.plot(trajectory, loss_function(np.array(trajectory)), 'r-o')
plt.show()
阅读全文