梯度下降算法代码python
时间: 2023-11-09 10:58:27 浏览: 106
梯度下降算法是一种常用的优化算法,用于求解函数的最小值。下面是一个用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
import numpy as np
def gradient_descent(x, y, learning_rate=0.01, num_iterations=1000):
# 初始化权重
m = b = 0
n = len(x)
for _ in range(num_iterations):
# 梯度计算
y_pred = m * x + b
dm = -(2/n) * sum(x * (y - y_pred))
db = -(2/n) * sum(y - y_pred)
# 更新权重
m -= learning_rate * dm
b -= learning_rate * db
return m, b
# 示例数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
m, b = gradient_descent(x, y)
print(f"斜率 (m): {m}, 截距 (b): {b}")
阅读全文