Python 梯度下降算法实现:线性回归模型
以下是一个简单的梯度下降算法的代码实现示例,用于线性回归模型的训练:
import numpy as np
def gradient_descent(X, y, learning_rate=0.01, num_iterations=1000):
'''
梯度下降算法的实现
参数:
X - 输入特征矩阵,每一行代表一个样本的特征
y - 输出标签向量,每个元素代表对应样本的标签
learning_rate - 学习率,控制更新的步长,默认为0.01
num_iterations - 迭代次数,默认为1000
返回:
theta - 模型的参数向量,包括截距和特征权重
cost_history - 每次迭代的损失函数值
'''
m, n = X.shape # 样本数量和特征数量
# 初始化参数向量
theta = np.zeros(n)
# 初始化损失函数值的历史记录
cost_history = []
for i in range(num_iterations):
# 计算预测值
y_pred = np.dot(X, theta)
# 计算误差
error = y_pred - y
# 计算梯度
gradient = np.dot(X.T, error) / m
# 更新参数
theta -= learning_rate * gradient
# 计算损失函数值
cost = np.sum(error ** 2) / (2 * m)
cost_history.append(cost)
return theta, cost_history
使用示例:
# 生成样本数据
X = np.array([[1, 1], [1, 2], [1, 3], [1, 4]])
y = np.array([2, 3, 4, 5])
# 调用梯度下降算法
theta, cost_history = gradient_descent(X, y)
print('参数向量:', theta)
print('损失函数值历史记录:', cost_history)
这段代码实现了一个简单的线性回归模型的梯度下降算法。输入特征矩阵 X 的每一行代表一个样本的特征,输出标签向量 y 的每个元素代表对应样本的标签。函数 gradient_descent 返回模型的参数向量 theta 和每次迭代的损失函数值 cost_history。在使用示例中,我们使用了一个简单的样本数据集,并打印出了最终的参数向量和损失函数值历史记录。
通过这个代码示例,您可以了解梯度下降算法的基本原理,并将其应用于线性回归等简单的机器学习模型的训练。
原文地址: http://www.cveoy.top/t/topic/hAq 著作权归作者所有。请勿转载和采集!