森林火灾是一种突发性强、破坏性大、处置救助较为困难的自然灾害。森林火灾不仅烧毁林木,直接减少森林面积,而且严重破坏森林结构和森林环境,导致森林生态系统失去平衡,森林生物量下降,生产力减弱,益兽益鸟减少,甚至造成人畜伤亡。本案例通过探索性分析(EDA)和机器学习构建线性回归模型,预测森林火灾的面积,并分析什么特征是发生森林火灾的重要因素。
1. 读数据表
首先,我们读取原始数据。
2. 数据字段基本统计信息
查看数据的基本统计信息。
从输出结果可以看出,该数据集一共有517条数据,包含13个变量,不存在缺失值。注意到month和day这两个特征不是数值型的数据。
3. 火灾面积分布直方图
我们采用更直观的方法,将数据集中火灾面积这一列的数据通过直方图和箱线图进行展示,来查看数据的分布情况:
4. 火灾面积分布箱线图
从上图中我们可以看出,数据主要分布在0~200之间,但也有少量数据大于600,area数据中存在一些离群点。
5. 删除火灾面积大于600的离群点
下面我们集中对刚刚发现的问题进行处理。首先,我们将数据集中火灾面积大于600的离群点去掉:
6. 月份和星期OneHot编码
7. 筛选火灾面积大于0的数据
处理完毕后,我们将火灾面积大于0的数据筛选出来,查看火灾发生的面积与FWI系统的FFMC指数、DMC指数、DC指数、ISI指数之间的关系。
8. MinMax标准化
我们使用MinMaxScaler方法,对数据集中除了X、Y、month、day之外的列做MinMax标准化,使得处理后的数据取值分布在[0,1]区间上。
9. 火灾面积与DMC散点图
我们分别绘制火灾发生的面积与DMC指数、DC指数、ISI指数、FFMC指数之间的散点图:
10. 火灾面积与DC散点图
11. 火灾面积与ISI散点图
12. 火灾面积与FFMC散点图
从上面的散点图中,我们发现火灾发生的面积与FFMC指数、DMC指数、DC指数、ISI指数之间并没有明显的相关性。
13. 训练/测试集划分
在训练模型之前需要将数据集划分为训练集和测试集,用训练集训练模型,用测试集评估模型。其中训练集占80%,测试集占20%:
14. 线性回归
我们使用线性回归训练模型,以下是训练好的模型的系数和截距:
15. 模型预测
然后用训练的模型在测试集上进行火灾面积的预测,预测结果保存为area_predict。
16. 回归模型评估
最后进行模型评估,输出均方误差、平均绝对误差、决定系数和中位绝对误差。