梯度下降法 matlab代码
时间: 2023-11-25 19:38:18 浏览: 82
可以使用以下的梯度下降法的matlab代码来优化一个多维函数:
```
function [theta, J_history = gradientDescent(X, y, theta, alpha, num_iters)
% X: 特征矩阵
% y: 目标变量向量
% theta: 参数向量
% alpha: 学习率
% num_iters: 迭代次数
m = length(y); % 样本数量
J_history = zeros(num_iters, 1); % 记录每次迭代的代价函数值
for iter = 1:num_iters
% 计算假设函数预测值
h = X * theta;
% 更新参数向量
theta = theta - (alpha / m) * X' * (h - y);
% 计算代价函数值
J = (1 / (2 * m)) * sum((h - y).^2);
J_history(iter) = J;
end
end
```
这段代码实现了梯度下降算法来最小化代价函数。它接受特征矩阵X,目标变量向量y,参数向量theta,学习率alpha和迭代次数num_iters作为输入。在每次迭代中,它计算假设函数的预测值,然后更新参数向量theta。最后,它计算代价函数的值并将其记录下来。返回更新后的参数向量theta和每次迭代的代价函数值J_history。
这段代码可以用于求解多种问题,包括线性回归和逻辑回归等。在逻辑回归的情况下,可以将特征矩阵X和目标变量向量y设置为合适的值,并选择合适的学习率和迭代次数来进行训练。
希望以上代码对您有帮助!
阅读全文