用Python写出梯度下降算法的代码

以下代码实现了一个梯度下降算法,用于求解线性回归模型中的最优参数向量。该算法通过不断迭代更新参数向量,使得每次更新后的参数都能够让代价函数(损失函数)值最小化,从而找到最优参数向量。其中,特征矩阵X包含m行n列,目标变量y包含m行1列,参数向量theta包含n行1列,学习率alpha和迭代次数num_iters是算法调节的超参数。

下面是一个使用Python实现梯度下降算法的示例代码:

import numpy as np

def gradient_descent(X, y, theta, alpha, num_iters):
    """
    梯度下降算法
    :param X: 特征矩阵,包含m行n列,其中m为样本数,n为特征数
    :param y: 目标变量,包含m行1列
    :param theta: 参数向量,包含n行1列
    :param alpha: 学习率
    :param num_iters: 迭代次数
    :return: 最优参数向量
    """
    m = len(y)
    for i in range(num_iters):
        h = np.dot(X, theta)
        delta = np.dot(X.T, h - y) / m
        theta -= alpha * delta
    return theta

在调用此函数时,需要传入特征矩阵X、目标变量y、学习率alpha和迭代次数num_iters等参数。函数将返回最优参数向量theta,即使得代价函数(损失函数)最小化的参数值。