梯度下降法matlab代码
时间: 2023-09-04 21:15:16 浏览: 44
以下是一个梯度下降法的 MATLAB 代码示例:
```
% 初始化参数
theta = zeros(2,1);
alpha = 0.01;
iterations = 1000;
% 加载数据
data = load('data.txt');
X = data(:, 1); y = data(:, 2);
m = length(y);
% 计算代价函数
J = computeCost(X, y, theta);
for iter = 1:iterations
% 计算假设函数
h = X * theta;
% 更新参数
theta = theta - (alpha / m) * X' * (h - y);
% 计算代价函数
J = computeCost(X, y, theta);
end
% 绘制拟合曲线
plot(X, y, 'rx', 'MarkerSize', 10);
hold on;
plot(X, X * theta, '-');
legend('Training data', 'Linear regression');
hold off;
% 计算代价函数
function J = computeCost(X, y, theta)
m = length(y);
J = 1 / (2 * m) * sum((X * theta - y).^2);
end
```
其中,`data.txt` 是包含训练数据的文本文件,每行包含一个样本的特征和标签,用空格或逗号分隔。
代码中的 `computeCost` 函数用于计算代价函数,即均方误差。在每次迭代时,根据当前参数计算假设函数,并根据偏导数更新参数。最终使用训练得到的参数绘制拟合曲线。