请用matlab编写一个线性回归程序
时间: 2023-10-21 15:03:55 浏览: 32
以下是一个简单的线性回归程序示例,包括数据的导入、模型的训练和预测:
```
% 导入数据
data = load('data.csv');
X = data(:, 1);
y = data(:, 2);
% 添加偏差项
X = [ones(length(X), 1), X];
% 初始化参数
theta = zeros(size(X, 2), 1);
% 定义代价函数
function J = costFunction(X, y, theta)
m = length(y);
J = (1/(2*m)) * sum((X*theta - y).^2);
end
% 批量梯度下降
alpha = 0.01;
num_iters = 1000;
for i = 1:num_iters
theta = theta - (alpha/length(y)) * X' * (X * theta - y);
J_history(i) = costFunction(X, y, theta);
end
% 绘制损失函数曲线
figure;
plot(1:num_iters, J_history, '-b', 'LineWidth', 2);
xlabel('迭代次数');
ylabel('代价函数');
% 预测
predict = [1, 3.5] * theta;
fprintf('预测房价为 %f\n', predict);
```
其中,`data.csv` 文件包含两列数据,第一列为房屋面积,第二列为房价。程序通过批量梯度下降算法对线性回归模型进行训练,最终得到参数 `theta`。预测时,输入房屋面积(假设为 3.5 平方米),并使用训练得到的参数计算预测值。