梯度下降法matlab举例
时间: 2023-10-16 11:07:48 浏览: 91
以下是一个使用梯度下降法求解线性回归问题的Matlab代码示例:
```matlab
% 训练集数据
X = [1, 2, 3, 4, 5]';
y = [2, 4, 5, 4, 5]';
% 初始化参数
theta = [0; 0];
% 梯度下降参数
alpha = 0.01; % 学习率
num_iters = 1000; % 迭代次数
% 梯度下降算法
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
% 计算梯度
grad = (1 / length(X)) * X' * (X * theta - y);
% 参数更新
theta = theta - alpha * grad;
% 计算代价函数
J_history(iter) = (1 / (2 * length(X))) * sum((X * theta - y).^2);
end
% 打印结果
fprintf('Theta found by gradient descent: %f %f\n', theta(1), theta(2));
% 绘制代价函数随迭代次数的变化图像
figure;
plot(1:num_iters, J_history, '-b', 'LineWidth', 2);
xlabel('Number of iterations');
ylabel('Cost J');
```
在这个示例中,我们使用梯度下降法解决了一个简单的线性回归问题。我们首先定义了训练集数据,然后初始化参数,并设定了梯度下降算法的参数。在每次迭代中,我们计算梯度并更新参数,并记录代价函数的值。最后,我们打印出求解得到的参数,并绘制出代价函数随迭代次数的变化图像。
阅读全文