在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 —— |
|