流程:
1.读数据表
首先,我们读取原始数据。
X | Y | month | day | FFMC | DMC | DC | ISI | temp | RH | wind | rain | area |
---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 5 | mar | fri | 86.2 | 26.2 | 94.3 | 5.1 | 8.2 | 51 | 6.7 | 0 | 0 |
7 | 4 | oct | tue | 90.6 | 35.4 | 669.1 | 6.7 | 18 | 33 | 0.9 | 0 | 0 |
7 | 4 | oct | sat | 90.6 | 43.7 | 686.9 | 6.7 | 14.6 | 33 | 1.3 | 0 | 0 |
8 | 6 | mar | fri | 91.7 | 33.3 | 77.5 | 9 | 8.3 | 97 | 4 | 0.2 | 0 |
8 | 6 | mar | sun | 89.3 | 51.3 | 102.2 | 9.6 | 11.4 | 99 | 1.8 | 0 | 0 |
2.字段基本统计信息
查看数据的基本统计信息。
X | Y | month | day | FFMC | DMC | DC | ISI | temp | RH | wind | rain | area | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
样本数 | 517 | 517 | 517 | 517 | 517 | 517 | 517 | 517 | 517 | 517 | 517 | 517 | 517 |
不同取值个数 | 12 | 7 | |||||||||||
众数 | aug | sun | |||||||||||
众数的频数 | 184 | 95 | |||||||||||
均值 | 4.669245648 | 4.2998065764 | 90.6446808511 | 110.8723404255 | 547.9400386847 | 9.0216634429 | 18.8891682785 | 44.2882011605 | 4.0176015474 | 0.0216634429 | 12.8472920696 | ||
标准差 | 2.3137778287 | 1.229900403 | 5.5201108489 | 64.0464822493 | 248.0661917058 | 4.5594771752 | 5.8066253496 | 16.3174692394 | 1.7916526009 | 0.2959591209 | 63.6558184679 | ||
最小值 | 1 | 2 | 18.7 | 1.1 | 7.9 | 0 | 2.2 | 15 | 0.4 | 0 | 0 | ||
下四分位数 | 3 | 4 | 90.2 | 68.6 | 437.7 | 6.5 | 15.5 | 33 | 2.7 | 0 | 0 | ||
中位数 | 4 | 4 | 91.6 | 108.3 | 664.2 | 8.4 | 19.3 | 42 | 4 | 0 | 0.52 | ||
上四分位数 | 7 | 5 | 92.9 | 142.4 | 713.9 | 10.8 | 22.8 | 53 | 4.9 | 0 | 6.57 | ||
最大值 | 9 | 9 | 96.2 | 291.3 | 860.6 | 56.1 | 33.3 | 100 | 9.4 | 6.4 | 1090.84 |
从输出结果可以看出,该数据集一共有517条数据,包含13个变量,不存在缺失值。注意到 month
和day
这两个特征不是数值型的数据。
3.火灾面积分布直方图
我们采用更直观的方法,将数据集中火灾面积这一列的数据通过直方图和箱线图进行展示,来查看数据的分布情况:
4.火灾面积分布箱线图
从上图中我们可以看出,数据主要分布在0~200之间,但也有少量数据大于600,area
数据中存在一些离群点。
5.删除火灾面积大于600的离群点
下面我们集中对刚刚发现的问题进行处理。首先,我们将数据集中火灾面积大于600的离群点去掉:
X | Y | month | day | FFMC | DMC | DC | ISI | temp | RH | wind | rain | area |
---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 5 | mar | fri | 86.2 | 26.2 | 94.3 | 5.1 | 8.2 | 51 | 6.7 | 0 | 0 |
7 | 4 | oct | tue | 90.6 | 35.4 | 669.1 | 6.7 | 18 | 33 | 0.9 | 0 | 0 |
7 | 4 | oct | sat | 90.6 | 43.7 | 686.9 | 6.7 | 14.6 | 33 | 1.3 | 0 | 0 |
8 | 6 | mar | fri | 91.7 | 33.3 | 77.5 | 9 | 8.3 | 97 | 4 | 0.2 | 0 |
8 | 6 | mar | sun | 89.3 | 51.3 | 102.2 | 9.6 | 11.4 | 99 | 1.8 | 0 | 0 |
6.月份和星期OneHot编码
X | Y | FFMC | DMC | DC | ISI | temp | RH | wind | rain | area | month_aug | month_dec | month_feb | month_jan | month_jul | month_jun | month_mar | month_may | month_nov | month_oct | month_sep | day_mon | day_sat | day_sun | day_thu | day_tue | day_wed |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 5 | 86.2 | 26.2 | 94.3 | 5.1 | 8.2 | 51 | 6.7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 4 | 90.6 | 35.4 | 669.1 | 6.7 | 18 | 33 | 0.9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
7 | 4 | 90.6 | 43.7 | 686.9 | 6.7 | 14.6 | 33 | 1.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
8 | 6 | 91.7 | 33.3 | 77.5 | 9 | 8.3 | 97 | 4 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
8 | 6 | 89.3 | 51.3 | 102.2 | 9.6 | 11.4 | 99 | 1.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
7.筛选火灾面积大于0的数据
处理完毕后,我们将火灾面积大于0的数据筛选出来,查看火灾发生的面积与FWI系统的FFMC指数、DMC指数、DC指数、ISI指数之间的关系。
X | Y | FFMC | DMC | DC | ISI | temp | RH | wind | rain | area | month_aug | month_dec | month_feb | month_jan | month_jul | month_jun | month_mar | month_may | month_nov | month_oct | month_sep | day_mon | day_sat | day_sun | day_thu | day_tue | day_wed |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9 | 9 | 85.8 | 48.3 | 313.4 | 3.9 | 18 | 42 | 2.7 | 0 | 0.36 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 4 | 91 | 129.5 | 692.6 | 7 | 21.7 | 38 | 2.2 | 0 | 0.43 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
2 | 5 | 90.9 | 126.5 | 686.5 | 7 | 21.9 | 39 | 1.8 | 0 | 0.47 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
1 | 2 | 95.5 | 99.9 | 513.3 | 13.2 | 23.3 | 31 | 4.5 | 0 | 0.55 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
8 | 6 | 90.1 | 108 | 529.8 | 12.5 | 21.2 | 51 | 8.9 | 0 | 0.61 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
8.火灾面积与DMC散点图
我们分别绘制火灾发生的面积与DMC指数、DC指数、ISI指数、FFMC指数之间的散点图:
9.火灾面积与DC散点图
10.火灾面积与ISI散点图
11.火灾面积与FFMC散点图
从上面的散点图中,我们发现火灾发生的面积与FFMC指数、DMC指数、DC指数、ISI指数之间并没有明显的相关性。
12.Min-Max标准化
我们使用MinMaxScaler方法,对数据集中除了X
、Y
、month
、day
之外的列做MinMax标准化,使得处理后的数据取值分布在[0,1]区间上。
X | Y | FFMC | DMC | DC | ISI | temp | RH | wind | rain | area | month_aug | month_dec | month_feb | month_jan | month_jul | month_jun | month_mar | month_may | month_nov | month_oct | month_sep | day_mon | day_sat | day_sun | day_thu | day_tue | day_wed |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 5 | 0.870968 | 0.086492 | 0.101325 | 0.090909 | 0.192926 | 0.423529 | 0.7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 4 | 0.927742 | 0.118194 | 0.775419 | 0.11943 | 0.508039 | 0.211765 | 0.055556 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
7 | 4 | 0.927742 | 0.146795 | 0.796294 | 0.11943 | 0.398714 | 0.211765 | 0.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
8 | 6 | 0.941935 | 0.110958 | 0.081623 | 0.160428 | 0.196141 | 0.964706 | 0.4 | 0.03125 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
8 | 6 | 0.910968 | 0.172984 | 0.11059 | 0.171123 | 0.29582 | 0.988235 | 0.155556 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
13.训练/测试集划分
在训练模型之前需要将数据集划分为训练集和测试集,用训练集训练模型,用测试集评估模型。其中训练集占80%,测试集占20%:
14.线性回归
我们使用线性回归训练模型,以下是训练好的模型的系数和截距:
系数
X | Y | FFMC | DMC | DC | ISI | temp | RH | wind | rain | month_aug | month_dec | month_feb | month_jan | month_jul | month_jun | month_mar | month_may | month_nov | month_oct | month_sep | day_mon | day_sat | day_sun | day_thu | day_tue | day_wed |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-0.001616 | -0.002182 | 0.083678 | 0.101768 | -0.184492 | -0.051779 | 0.017139 | -0.013061 | -0.002276 | -0.006502 | 0.051713 | 0.080332 | -0.00888 | -0.052928 | 0.025639 | 0.014181 | -0.02992 | 0.030859 | -0.042622 | 0.106828 | 0.097483 | -0.001168 | 0.020513 | 0.011736 | -0.010268 | 0.026505 | -0.000168 |
截距
-0.013356
15.模型预测
然后用训练的模型在测试集上进行火灾面积的预测,预测结果保存为area_predict
。
X | Y | FFMC | DMC | DC | ISI | temp | RH | wind | rain | month_aug | month_dec | month_feb | month_jan | month_jul | month_jun | month_mar | month_may | month_nov | month_oct | month_sep | day_mon | day_sat | day_sun | day_thu | day_tue | day_wed | area | area_predict |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2 | 5 | 0.9703225806 | 0.5809786354 | 0.4736718658 | 0.2192513369 | 0.6816720257 | 0.2941176471 | 0.6555555556 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0.0578037682 |
3 | 4 | 0.9380645161 | 0.4869055824 | 0.6960243931 | 0.1889483066 | 0.5659163987 | 0.2823529412 | 0.5555555556 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0.0311150413 |
7 | 4 | 0.92 | 0.1392143349 | 0.7912513193 | 0.1550802139 | 0.2926045016 | 0.5294117647 | 0.5555555556 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0074082892 |
5 | 6 | 0.9316129032 | 0.4321157822 | 0.7958250264 | 0.1247771836 | 0.4019292605 | 0.6470588235 | 0.3555555556 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0280614525 |
1 | 2 | 0.9290322581 | 0.2749827705 | 0.4226574411 | 0.2994652406 | 0.4051446945 | 0.7411764706 | 0.8444444444 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0138849822 |
16.回归模型评估
指标 | 取值 |
---|---|
均方误差(MSE) | 0.02704 |
平均绝对误差(MAE) | 0.069272 |
决定系数(R2) | -0.059488 |
中位绝对误差 | 0.023784 |