matlad实现线性回归
时间: 2023-07-07 21:28:27 浏览: 41
好的,下面是一个简单的 MATLAB 代码实现线性回归:
假设有一个数据集,其中 x 是自变量,y 是因变量,我们的目标是拟合一个线性模型 y = θ0 + θ1 * x,使得模型能够在数据集上表现得很好。
首先,我们需要将数据导入 MATLAB 并进行预处理:
```
data = load('data.txt');
x = data(:, 1);
y = data(:, 2);
m = length(y);
```
其中,data.txt 是我们的数据集文件,x 和 y 分别是自变量和因变量的向量,m 是数据集的大小。
接下来,我们需要定义代价函数和梯度下降算法:
```
function [J, grad] = costFunction(theta, x, y)
m = length(y);
h = x * theta;
J = 1 / (2 * m) * sum((h - y) .^ 2);
grad = 1 / m * x' * (h - y);
end
function [theta, J_history] = gradientDescent(x, y, theta, alpha, num_iters)
m = length(y);
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
[J, grad] = costFunction(theta, x, y);
theta = theta - alpha * grad;
J_history(iter) = J;
end
end
```
其中,costFunction 函数计算代价函数和梯度,gradientDescent 函数实现梯度下降算法,并返回训练出的参数和每次迭代的代价函数值。
最后,我们可以使用以下代码来训练模型并进行预测:
```
% 初始化模型参数
theta = zeros(2, 1);
% 定义学习率和迭代次数
alpha = 0.01;
num_iters = 1500;
% 运行梯度下降算法
[theta, J_history] = gradientDescent([ones(m, 1) x], y, theta, alpha, num_iters);
% 预测新的数据
x_new = [1, 3.5];
y_new = x_new * theta;
```
其中,我们在 x 前添加了一列 1,以便进行截距计算,x_new 是一个新的自变量向量,y_new 是对应的因变量预测值。
希望这个 MATLAB 代码能够帮助到你!