分享

基于MATLAB的简单线性回归

 基算仿真 2024-03-06 发布于广西

10个最常见的机器学习算法介绍(上)中我们提到了线性回归,在机器学习领域中大多数任务通常都与预测(prediction)有关。当我们想预测一个数值时,就会涉及到回归问题。常见的例子包括:预测价格(房屋、股票等)、预测住院时间(针对住院病人等)、 预测需求(零售销量等)。但不是所有的预测都是回归问题。

线性回归是一种广泛使用的统计技术,用于理解和建模变量之间的关系。

线性关系不仅仅只能存在 2 个变量(二维平面)。3 个变量时(三维空间),线性关系就是一个平面,4 个变量时(四维空间),线性关系就是一个体,以此类推…

1. 导入数据

首先需要导入要分析的数据。该数据应包含两个变量:自变量(通常表示为“x”)和因变量(通常表示为“y”)。

这里我们使用Matlab自带的数据集“carsmall”

load carsmall;
x = Weight;  
y = MPG;

导入后的数据集由以下部分组成:


2. 数据预处理

在数据集中存在一些无效数据NaN。在执行线性回归之前,我们将使用 isnan 函数来识别和排除任何 NaN 值。

valid_indices = ~isnan(x) & ~isnan(y);
x = x(valid_indices);
y = y(valid_indices);

3. 可视化数据

在执行线性回归之前,可视化数据通常有助于理解变量之间的关系。

这里使用 MATLAB 的绘图函数来创建数据点的散点图。

scatter(x, y);
xlabel('Independent Variable (x)');
ylabel('Dependent Variable (y)');
title('Scatter Plot of Data');

4. 进行线性回归

这里使用内置的 polyfit 函数执行线性回归操作。

该函数将指定次数的多项式曲线拟合到数据并返回多项式的系数。我们这里要拟合一条直线,所以n取1 。

coefficients = polyfit(x, y, 1);
slope = coefficients(1);
intercept = coefficients(2);

polyfit 函数按降序返回多项式的系数。在简单线性回归的情况下,第一个系数表示直线的斜率,第二个系数表示 y 轴截距。

5. 绘制回归线

现在有了斜率和截距值,可以在散点图上绘制回归线,以可视化它与数据的拟合程度。

y_fit = slope * x + intercept;
hold on;
plot(x, y_fit, 'r');
legend('Data', 'Regression Line');


6. 评估拟合优度(Goodness of Fit)

要评估回归线的拟合程度,可以计算决定系数(R 平方)值。

MATLAB提供了 corrcoef 函数来计算两个变量之间的相关系数,对其求平方即可得到R平方值。

correlation_matrix = corrcoef(x, y);
correlation = correlation_matrix(1, 2);
r_squared = correlation^2;
disp(['R-squared: ', num2str(r_squared)]);

运行结果为:

R-squared: 0.73812

R^2越接近1说明误差越小,拟合程度更高。

—— end ——

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多