多元线性回归代码matlab
时间: 2023-06-17 09:05:21 浏览: 346
以下是一个简单的多元线性回归的 MATLAB 代码示例:
```matlab
% 假设有三个自变量 x1, x2, x3 和一个因变量 y
% 样本数据存储在变量 X 和 Y 中
% 构造设计矩阵 X
X = [ones(size(X,1),1), X];
% 计算回归系数
b = inv(X'*X)*X'*Y;
% 预测新的观测值
new_X = [1, x1_new, x2_new, x3_new];
y_pred = new_X*b;
```
其中,变量 X 是设计矩阵,包括一个全为 1 的列向量和所有自变量的值。变量 Y 是因变量的向量。使用 `inv()` 函数计算矩阵的逆。最后,可以使用新的自变量值计算预测的因变量值。
相关问题
多元线性回归的matlab代码
以下是一个示例的多元线性回归的 MATLAB 代码:
% 读取数据
data = readtable('data.csv');
% 提取自变量和因变量
X = table2array(data(:,1:3));
Y = table2array(data(:,4));
% 添加截距项
X = [ones(size(X,1),1) X];
% 计算回归系数
beta = inv(X'*X)*X'*Y;
% 输出结果
disp(['回归系数:' num2str(beta')]);
% 预测新数据
new_data = [1 5 10 15]; % 新数据
y_pred = new_data*beta; % 预测值
disp(['预测值:' num2str(y_pred)]);
该代码假设数据已保存在名为 data.csv 的 CSV 文件中,其中第一列到第三列是自变量,第四列是因变量。代码首先读取数据,然后提取自变量和因变量,并添加截距项。接下来,使用正规方程法计算回归系数。最后,代码使用回归系数预测新数据并输出结果。
多元线性回归模型matlab代码
以下是一个多元线性回归模型的 Matlab 代码示例:
```matlab
% 导入数据
data = load('data.txt');
X = data(:, 1:2); % 自变量
y = data(:, 3); % 因变量
m = length(y); % 样本数
% 特征归一化
[X, mu, sigma] = featureNormalize(X);
% 添加截距项
X = [ones(m, 1) X];
% 初始化 theta
theta = zeros(3, 1);
% 定义代价函数
function J = computeCost(X, y, theta)
m = length(y);
J = 1 / (2 * m) * sum((X * theta - y) .^ 2);
end
% 执行梯度下降算法
alpha = 0.01; % 学习率
num_iters = 400; % 迭代次数
J_history = zeros(num_iters, 1); % 记录每次迭代的代价函数值
for iter = 1:num_iters
theta = theta - alpha / m * X' * (X * theta - y);
J_history(iter) = computeCost(X, y, theta);
end
% 绘制代价函数的收敛曲线
plot(1:num_iters, J_history, '-b', 'LineWidth', 2);
xlabel('迭代次数');
ylabel('代价函数值');
% 预测结果
x_test = [1650 3];
x_test = (x_test - mu) ./ sigma; % 特征归一化
x_test = [1 x_test];
price = x_test * theta;
fprintf('预测价格为 %f\n', price);
```
其中,`data.txt` 是包含样本数据的文本文件,每行的数据格式为 `x1 x2 y`,表示两个自变量和一个因变量。`featureNormalize` 函数是对自变量进行特征归一化的函数,用于提高算法的收敛速度。在执行梯度下降算法时,需要指定学习率 `alpha` 和迭代次数 `num_iters`,并记录每次迭代的代价函数值,以便绘制收敛曲线。最后,使用训练好的模型对新的自变量进行预测,得到因变量的预测值。
阅读全文