用matlab编一段BGD梯度下降法程序(带图像,输入特征和输出目标任意)
时间: 2024-05-09 13:14:41 浏览: 114
使用了随机梯度下降法(SGD)和批量梯度下降法(BGD)解决单层感知机问题Matlab代码.rar
好的,以下是一个简单的梯度下降法的 Matlab 程序示例,其中使用了 Batch Gradient Descent (BGD) 算法,同时使用了一个简单的线性回归模型(只有一个特征)。
我们将使用一个示例数据集,其中包含一个城市的人口和该城市的利润。我们的目标是建立一个模型来预测在不同城市的人口时,该城市的利润。下面是代码:
```matlab
% 导入数据
data = load('ex1data1.txt');
X = data(:, 1); % 特征
y = data(:, 2); % 目标值
m = length(y); % 样本数量
% 初始化参数
theta = zeros(2, 1); % 参数向量
iterations = 1500; % 迭代次数
alpha = 0.01; % 学习速率
% 执行 BGD 算法
for iter = 1:iterations
% 计算梯度
h = X * theta;
grad = (1/m) * X' * (h - y);
% 更新参数
theta = theta - alpha * grad;
end
% 绘制数据和拟合直线
plot(X, y, 'rx', 'MarkerSize', 10);
hold on;
plot(X, [ones(m, 1) X] * theta, '-');
legend('Training data', 'Linear regression');
```
我们首先导入数据,然后初始化参数向量 $\theta$,迭代次数和学习速率。然后我们执行 BGD 算法,其中在每个迭代中我们计算梯度,然后使用学习速率和梯度更新参数向量。最后,我们绘制数据和拟合直线。
请注意,此处的示例使用了一个简单的线性回归模型,只有一个特征。如果您需要处理更复杂的数据,您需要使用更复杂的模型(如多项式回归、逻辑回归等),并相应地调整代码。
阅读全文