梯度下降算法代码python
时间: 2023-11-09 08:58:27 浏览: 41
梯度下降算法是一种常用的优化算法,用于求解函数的最小值。下面是一个用Python实现的梯度下降算法的示例代码:
```python
import numpy as np
def gradient_descent(X, y, learning_rate, num_iterations):
m = X.shape[0]
n = X.shape[1]
theta = np.zeros((n, 1))
for iteration in range(num_iterations):
gradients = (2/m) * X.T.dot(X.dot(theta) - y)
theta = theta - learning_rate * gradients
return theta
# 使用示例
X = np.array([[1, 2], [1, 3], [1, 4]])
y = np.array([[3], [4], [5]])
learning_rate = 0.1
num_iterations = 100
theta = gradient_descent(X, y, learning_rate, num_iterations)
print(theta)
```
这是一个简单的线性回归的梯度下降算法的实现。在这个例子中,我们使用了一个包含两个特征的输入矩阵X和一个输出向量y。算法会根据给定的学习率和迭代次数来更新theta的值,最终输出得到的theta。
相关问题
梯度下降算法python代码
梯度下降算法是一种常用的优化算法,用于求解函数的最小值。以下是一个简单的梯度下降算法的Python代码示例:
```python
import numpy as np
def gradient_descent(X, y, learning_rate, num_iterations):
num_samples, num_features = X.shape
theta = np.zeros(num_features) # 初始化参数向量
for i in range(num_iterations):
# 计算预测值
y_pred = np.dot(X, theta)
# 计算误差
error = y_pred - y
# 计算梯度
gradient = np.dot(X.T, error) / num_samples
# 更新参数
theta -= learning_rate * gradient
return theta
# 示例数据
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
y = np.array([4, 7, 10])
# 调用梯度下降算法
learning_rate = 0.01
num_iterations = 1000
theta = gradient_descent(X, y, learning_rate, num_iterations)
print("最优参数:", theta)
```
相关问题:
1. 什么是梯度下降算法?
2. 如何选择学习率和迭代次数?
3. 梯度下降算法的优缺点是什么?
4. 还有哪些常用的优化算法?
梯度下降算法python 完整代码
梯度下降算法是一种用于求解最小值的算法,常用于机器学习中的参数优化。在进行机器学习训练时,我们通常需要使用梯度下降算法来优化模型的参数,以使得模型的预测效果更好。
下面是一个简单的梯度下降算法的 Python 代码实现:
```python
def gradient_descent(x, y, theta, alpha, num_iters):
"""
:param x: 输入变量,矩阵
:param y: 输出变量,矩阵
:param theta: 参数向量
:param alpha: 学习率
:param num_iters: 迭代次数
:return: 优化后的参数向量
"""
m = x.shape[0] # 样本数量
n = x.shape[1] # 特征数量
for _ in range(num_iters):
for j in range(n):
error = y - x.dot(theta)
gradient = (x[:, j] * error).sum() / m
theta[j] = theta[j] + alpha * gradient
return theta
```
在使用梯度下降算法时,需要注意几点:
- 需要提供输入变量 `x` 和输出变量 `y`,以及初始化的参数向量 `theta`。
- 需要设定学习率 `alpha` 和迭代次数 `num_iters`。
- 在每一次迭代中,需要更新每个参数的值。
- 迭代过程中,需要计算当前参数的梯度,并使用梯度下降算法的公式来更新参数的