请编写一个用于机器学习梯度下降算法的函数
时间: 2024-05-19 07:15:53 浏览: 84
机器学习梯度下降代码
def gradient_descent(X, y, alpha, num_iterations):
"""
X: 特征矩阵,m行n列,m为样本数量,n为特征数量
y: 目标变量,m行1列
alpha: 学习率(步长)
num_iterations: 迭代次数
"""
m = len(y) # 样本数量
n = X.shape[1] # 特征数量
theta = np.zeros((n, 1)) # 初始化theta参数
J_history = [] # 记录每次迭代后的代价函数值
for i in range(num_iterations):
h = np.dot(X, theta) # 计算预测值
loss = h - y # 计算误差
gradient = np.dot(X.T, loss) / m # 计算梯度
theta = theta - alpha * gradient # 更新参数
J_history.append(compute_cost(X, y, theta)) # 计算代价函数值并记录
return theta, J_history
阅读全文