梯度下降法matlab代码
时间: 2023-06-30 10:03:59 浏览: 77
梯度下降法的matlab程序,已检查过,没有错误
5星 · 资源好评率100%
以下是一个简单的梯度下降法的 Matlab 代码示例:
```matlab
% 初始化参数
theta = zeros(2,1); % 参数向量
alpha = 0.01; % 学习率
num_iters = 1500; % 迭代次数
% 加载数据
data = load('data.txt');
X = data(:, 1); % 特征向量
y = data(:, 2); % 目标向量
m = length(y); % 样本数
% 添加偏置项
X = [ones(m, 1), X];
% 计算代价函数
J_history = zeros(num_iters, 1);
J_history(1) = computeCost(X, y, theta);
% 梯度下降
for iter = 2:num_iters
% 计算梯度
grad = (1/m) * X' * (X * theta - y);
% 更新参数
theta = theta - alpha * grad;
% 计算代价函数
J_history(iter) = computeCost(X, y, theta);
end
% 绘制代价函数曲线
plot(1:num_iters, J_history, '-b', 'LineWidth', 2);
xlabel('迭代次数');
ylabel('代价函数值');
```
其中,`computeCost` 函数用于计算代价函数,代码如下:
```matlab
function J = computeCost(X, y, theta)
m = length(y);
J = (1/(2*m)) * sum((X * theta - y).^2);
end
```
请注意,该代码只是一个简单的示例,实际应用中需要根据具体问题进行修改和优化。
阅读全文