梯度下降法matlab代码
时间: 2023-09-26 10:07:55 浏览: 77
以下是一个简单的梯度下降法的Matlab代码示例:
```matlab
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
%GRADIENTDESCENT Performs gradient descent to learn theta
% theta = GRADIENTDESCENT(X, y, theta, alpha, num_iters) updates theta by
% taking num_iters gradient steps with learning rate alpha
% Initialize some useful values
m = length(y); % number of training examples
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
% Perform a single gradient step on the parameter vector theta
% Calculate the hypothesis h(x)
h = X * theta;
% Calculate the error between the hypothesis and the actual values
errors = h - y;
% Calculate the gradient
gradient = (1/m) * (X' * errors);
% Update the parameter values
theta = theta - (alpha * gradient);
% Save the cost J in every iteration
J_history(iter) = computeCost(X, y, theta);
end
end
```
其中,输入参数包括:
- `X`:训练集特征矩阵;
- `y`:训练集标签向量;
- `theta`:模型参数向量,初始值需要预设;
- `alpha`:学习率,控制参数更新的步长;
- `num_iters`:迭代次数。
输出结果包括:
- `theta`:更新后的模型参数向量;
- `J_history`:每一次迭代之后的代价函数值。
注意,此代码仅适用于线性回归模型,如果要使用于其他模型,需要修改代价函数和梯度的计算方式。
阅读全文