Python大数据分析与应用实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4.3 使用多元线性回归预测气温

使用多元线性回归预测气温的流程如下。

(1)分析各个维度之间的关系,进而确定自变量的因子。

(2)利用选定的自变量进行多元线性回归建模。

1.分析天气数据各个维度之间的关系

因为早期数据对风向、风速的定义较为混乱,所以这里截取2017—2020年的数据作为分析数据。为了观察预处理后的数据集中“maxPre”与“maxTem”“minTem”“wind_direction”“wind_speed”的关系,在数据预处理后,首先使用replace()函数将汉字转换为浮点数。然后利用Seaborn库中的pairplot()函数绘制各个数据之间的矩阵散点图(见图2-22)。通过矩阵散点图可以看到,次日实际最高气温(“maxPre”列)和当日最高气温(“maxTem”列)、当日最低气温(“minTem”列)之间存在一定的相关性。

为了更精确地查看各个维度的数据之间的相关性,这里调用np.corrcoef()函数计算各个维度的相关系数,并使用sns.heatmap()函数绘制相关系数矩阵热力图(见图2-23)。由此可以看出,次日最高气温(maxPre)与当日最高气温(maxTem)、当日最低气温(minTem)高度相关,其相关系数达到0.913和0.914。当日最高气温(maxTem)、当日最低气温(minTem)可以作为多元线性回归的自变量。

图2-22 各个维度矩阵散点图

图2-23 相关系数矩阵热力图

2.多元线性回归建模

多元线性回归的建模方法和一元线性回归的建模方法比较类似,下面依旧采用2011—2018年的数据作为训练数据,2019—2020年的数据作为测试数据,其建模过程如下。

1)模型训练

与一元线性回归类似,使用scikit-learn机器学习库在训练数据集上拟合得到的方程为

Y=3.508+0.6172×maxTem+0.3213×minTem

拟合平面如图2-24所示。

图2-24 拟合平面

2)模型评估

测试集上的模型评估报告如下所示:

由此可以发现,回归模型中的R-squared的值为0.842,该值比一元线性回归模型有所提升。

3)预测数据与实际数据的对比

为了直观地观察测试集中实际值和预测值之间的差别,笔者绘制了三维散点图(见图2-25)。其中,X轴为当日最高气温,Y轴为当日最低气温,Z轴表示次日预测最高气温和实际最高气温(“·”表示实际气温,“+”表示预测气温)。在调整三维图像观察视角之后,预测值主要分布在实际值中间,模型的拟合相对较好,模型基本可用。

图2-25 多元线性回归测试集对比图