梯度下降算法matlab实现
时间: 2023-11-13 13:55:49 浏览: 79
梯度下降算法是一种常用的优化算法,可以用于求解函数的最小值。在Matlab中,可以通过以下代码实现梯度下降算法:
```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
% 计算梯度
grad = (1/m) * X' * (X * theta - y);
% 更新参数
theta = theta - alpha * grad; % 记录代价函数值
J_history(iter) = computeCost(X, y, theta);
end
end
```
其中,`computeCost`函数用于计算代价函数的值,代码如下:
```matlab
function J = computeCost(X, y, theta)
% X: 训练集特征矩阵
% y: 训练集标签向量
% theta: 模型参数向量
m = length(y); % 训练集样本数
J = 1/(2*m) * sum((X * theta - y).^2);
end
```
使用时,需要先准备好训练集特征矩阵`X`和标签向量`y`,然后初始化模型参数向量`theta`,设置学习率`alpha`和迭代次数`num_iters`,最后调用`gradientDescent`函数即可。
阅读全文