在 MATLAB 中训练集,测试集线性回归建模代码
时间: 2024-03-26 16:35:51 浏览: 72
在 MATLAB 中,可以使用 `fitlm` 函数来进行线性回归建模。以下是一个简单的例子:
```matlab
% 生成训练数据
trainX = rand(100, 1);
trainY = 2 * trainX + randn(100, 1);
% 生成测试数据
testX = rand(50, 1);
testY = 2 * testX + randn(50, 1);
% 使用 fitlm 函数进行线性回归建模
model = fitlm(trainX, trainY);
% 使用 predict 函数进行预测
trainPred = predict(model, trainX);
testPred = predict(model, testX);
% 计算模型的性能指标
trainMSE = immse(trainY, trainPred);
testMSE = immse(testY, testPred);
% 打印模型性能指标
fprintf('Training MSE: %f\n', trainMSE);
fprintf('Testing MSE: %f\n', testMSE);
```
在这个例子中,我们生成了训练集和测试集数据,使用 `fitlm` 函数对训练数据进行拟合,然后使用 `predict` 函数对训练集和测试集进行预测。最后,我们计算了模型在训练集和测试集上的均方误差(MSE),并将其打印出来。
相关问题
在 MATLAB 中训练集,测试集建立线性回归图
在 MATLAB 中,可以使用 `plot` 函数来绘制数据和线性回归拟合线的图形。以下是一个简单的例子:
```matlab
% 生成训练数据
trainX = rand(100, 1);
trainY = 2 * trainX + randn(100, 1);
% 生成测试数据
testX = rand(50, 1);
testY = 2 * testX + randn(50, 1);
% 使用 fitlm 函数进行线性回归建模
model = fitlm(trainX, trainY);
% 绘制训练集和测试集的散点图
scatter(trainX, trainY, 'filled');
hold on;
scatter(testX, testY, 'filled');
% 绘制线性回归拟合线
xlim([0 1]);
ylim([0 4]);
plot(model);
% 添加图例和标签
legend('训练集', '测试集', '线性回归拟合');
xlabel('X');
ylabel('Y');
```
在这个例子中,我们生成了训练集和测试集数据,使用 `fitlm` 函数对训练数据进行拟合,然后使用 `scatter` 函数绘制训练集和测试集的散点图。接着,我们使用 `xlim` 和 `ylim` 函数设置图像的坐标轴范围,使用 `plot` 函数绘制线性回归拟合线。最后,我们使用 `legend` 函数添加图例,使用 `xlabel` 和 `ylabel` 函数添加坐标轴标签。
随机生成数据并做线性回归并画图做最小化训练集上的均方误差代码MATLAB
以下是一个随机生成数据并进行线性回归、绘制拟合直线和最小化训练集上均方误差的MATLAB示例代码:
```matlab
% 随机生成数据
x = rand(100, 1) * 10;
y = 3 * x + 2 + randn(100, 1);
% 绘制数据分布
figure;
scatter(x, y);
xlabel('x');
ylabel('y');
title('Randomly Generated Data');
% 切分数据集
m = length(y); % 样本数量
train_size = floor(0.7 * m); % 70%为训练集
train_idx = randperm(m, train_size);
test_idx = setdiff(1:m, train_idx);
X_train = x(train_idx);
y_train = y(train_idx);
X_test = x(test_idx);
y_test = y(test_idx);
% 初始化参数
theta = zeros(2, 1); % 参数向量
X_train = [ones(train_size, 1), X_train]; % 添加截距项
% 最小化训练集上的均方误差
theta = inv(X_train' * X_train) * X_train' * y_train;
% 绘制拟合直线
hold on;
plot(X_test, [ones(length(X_test),1) X_test] * theta, '-');
legend('Training data', 'Linear regression');
hold off;
% 计算测试集误差
y_pred = [ones(length(X_test),1) X_test] * theta;
mse = mean((y_pred - y_test).^2);
disp(['Test set MSE: ', num2str(mse)]);
```
在这个例子中,我们首先随机生成一组有噪声的数据,并将其划分为训练集和测试集。然后,我们初始化参数向量,并使用最小二乘法最小化训练集上的均方误差进行模型训练。接着,我们绘制拟合直线,并计算测试集误差。
需要注意的是,在实际应用中,线性回归模型并不总是能够很好地拟合数据,因此需要使用更复杂的模型进行建模。
阅读全文