✅博主简介:本人擅长数据处理、建模仿真、程序设计、论文写作与指导,项目与课题经验交流。项目合作可私信或扫描文章底部二维码。
基于成都市空气质量相关数据,研究空气质量指数(AQI)的影响因素,并设计和实现了一套基于机器学习的预测模型。通过爬虫技术获取成都市的空气质量数据,并对其进行预处理和分析,探索成都市空气质量的变化规律。同时,研究了空气质量的主要影响因素,建立多元回归模型,分析气象因素与空气质量的关系。随后,本文采用ARIMA模型、随机森林模型、XGBoost模型和支持向量机(SVM)四种模型对成都市的AQI进行了预测,最后构建组合预测模型对预测结果进行优化。
1. 数据收集与预处理
1.1 爬虫技术获取数据
首先,本文通过爬虫技术从成都市环保部门官方网站或第三方数据平台(如AQICN或天气网)获取成都市的空气质量历史数据。数据包括空气质量指数(AQI)、PM2.5、PM10、CO、NO2、SO2、O3等污染物浓度,以及气象数据如温度、湿度、风速、气压、降水等。
1.2 数据清洗与描述性分析
获取的数据经过清洗与预处理,主要步骤包括:
- 缺失值处理:通过插值法、均值填充等方式填补数据缺失。
- 异常值检测:剔除空气质量数据中的异常值,如极端异常的污染物浓度值。
- 数据规范化:对不同单位的数据进行标准化处理,使得所有数据在同一尺度上进行分析与建模。
1.3 数据可视化分析
对成都市空气质量数据进行描述性分析与可视化,初步探讨空气质量的变化规律。通过绘制成都市空气质量指数和各污染物的时间序列图、相关性矩阵等,分析不同时间段内空气质量的变化趋势,找出成都市空气污染的主要时段和污染物。
2. 影响因素分析与多元回归模型
2.1 多元回归模型
本文基于多元回归模型探讨空气质量的影响因素,分别分析污染物、气象因素与空气质量指数(AQI)之间的关系。模型假设空气质量指数是气象因素和污染物浓度的函数,表达式为:
通过回归模型分析,找出对成都市空气质量影响最大的污染物和气象因素,并对它们进行排序。结果显示,PM2.5 和 PM10 对 AQI 的影响最大,而气象因素中,温度、气压、风速对空气质量影响较大。
2.2 影响因素排序
基于回归模型的系数和显著性水平,本文得出成都市空气质量的主要影响因素:
- 在污染物中,PM2.5 和 PM10 对AQI的影响最大;
- 在气象因素中,影响空气质量的大小排序为:温度 > 气压 > 风速 > 降水 > 风向 > 湿度。
3. 空气质量指数预测模型
本文采用四种预测模型对成都市的AQI进行预测,分别是:
3.1 ARIMA 模型
ARIMA 模型是一种经典的时间序列预测方法,适合处理线性和季节性数据。在对成都市AQI的时间序列建模时,ARIMA模型捕捉了AQI随时间的波动趋势,但对非线性数据的预测效果有限。
3.2 随机森林模型
随机森林是一种集成学习算法,通过构建多棵决策树来进行回归预测。本文将成都市的空气质量数据作为输入,随机森林模型在处理复杂特征与非线性关系时表现出色,预测效果较为理想。
3.3 XGBoost 模型
XGBoost 是一种改进的梯度提升树(GBT)算法,在处理大规模数据和高维特征时具有很高的效率。本文采用XGBoost模型对成都市AQI进行预测,结果表明该模型对空气质量的短期波动具有较好的拟合效果。
3.4 支持向量机(SVM)
SVM 是一种常用的回归分析方法,适合处理高维空间下的非线性数据。本文使用SVM对成都市空气质量指数进行预测,并与其他模型进行对比,发现其对数据的过拟合风险较低,但预测精度略低于随机森林和XGBoost模型。
4. 组合预测模型
为了进一步提升预测效果,本文构建了随机森林与SVM、XGBoost与SVM的组合模型(RF-SVR 和 XGBoost-SVR)。组合模型的思路是先使用随机森林或XGBoost模型对AQI进行预测,再利用支持向量机对预测残差进行修正。
4.1 RF-SVR 组合模型
在随机森林模型的基础上,本文利用支持向量机对其预测误差进行二次拟合,进一步优化了AQI的预测效果。
4.2 XGBoost-SVR 组合模型
类似地,本文在XGBoost模型的基础上,使用SVM对残差进行修正,最终得到更为准确的AQI预测结果。
5. 模型评估与比较
为了评价不同模型的预测效果,本文采用以下评价指标:
- 决定系数(R²):衡量模型拟合优度的标准,值越接近1,模型的拟合效果越好;
- 均方误差(MSE):预测值与实际值之间的平方差的均值,用于衡量预测误差的大小;
- 平均绝对误差(MAE):实际值与预测值之间的平均绝对差异。
通过对比分析,本文得出以下结论:
- 随机森林模型和RF-SVR组合模型在成都市AQI的预测中表现最佳,尤其是RF-SVR组合模型的预测精度优于单一的随机森林模型,R²、MSE、MAE分别达到了0.998572,1.107289,0.243125。
- XGBoost-SVR组合模型的预测效果紧随其后,同样在短期AQI预测中表现出色。
% 随机森林模型训练
Mdl_RF = TreeBagger(100, features, aqi, 'Method', 'regression');
% 预测AQI
aqi_pred_RF = predict(Mdl_RF, features);
% SVM残差修正
residuals = aqi - aqi_pred_RF; % 计算残差
Mdl_SVM = fitrsvm(features, residuals);
% 使用SVM修正预测结果
residuals_pred = predict(Mdl_SVM, features);
aqi_pred_corrected = aqi_pred_RF + residuals_pred;
% 评估模型性能
mse_value = mse(aqi_pred_corrected, aqi);
r2_value = 1 - sum((aqi - aqi_pred_corrected).^2) / sum((aqi - mean(aqi)).^2);
fprintf('组合模型 MSE: %.4f\n', mse_value);
fprintf('组合模型 R²: %.4f\n', r2_value);
组合预测模型:
数据处理:
热力图: