2023华中杯c题

本文详细解答了2023华中杯C题,通过分析附件数据,使用随机森林模型与ARIMA模型,筛选出与PM2.5浓度变化相关的因素,构建了PM2.5多步预测模型并评估了预测效果,同时预测了未来AQI,给出了空气质量预警等级。主要涉及数据分析、特征选择、模型构建和预测评估等步骤。
摘要由CSDN通过智能技术生成

2023华中杯c题(答案)

大赛简介

第十五届“华中杯”大学生数学建模挑战赛(以下简称竞赛)于3月13日正式开启报名。举办竞赛的目的在于提升学生对数学科学理论及应用价值的认识,培养学生的创新意识与团队精神。竞赛由湖北省工业与应用数学学会主办,泰迪智能科技(武汉)有限公司承办,武汉大学、华中科技大学、华中师范大学、中南财经政法大学、华中农业大学、中国地质大学、武汉理工大学、湖北大学、武汉科技大学协办。
在这里插入图片描述

题目

空气污染对人类健康、生态环境、社会经济造成危害,其污染水平受诸多因素的影响, 如 PM2.5、PM10、CO、气温、风速、降水量等,探究 PM2.5 等污染物浓度的因素,更精 准的预测 PM2.5 浓度和 AQI 指数等是科学界和决策者共同关心的问题,对于解析污染影 响因素和有效制订控制策略具有重要意义
为了健全和针对完善重污染天气的应对处置机制,提高重污染天气预防预警、应急响 应能力和环境精细化管理水平,消除重度及以上污染天气,作为突发环境事件应急预案体 系的重要组成部分,某地发布污染天气应急预案,该预案将加强监测预警和节能减排,最 大程度降低污染天气的影响。其预警等级划分为四级应急响应:
蓝色预警:预测日 AQI>150 或日 AQI>100 持续 48 小时及以上。
黄色预警:预测日 AQI>200 或日 AQI>150 持续 48 小时及以上。
橙色预警:预测日 AQI>200 持续 48 小时或日 AQI>150 持续 72 小时及以上。
红色预警:预测日 AQI>200 持续 72 小时且日 AQI>300 持续 24 小时及以上。
请完成以下几个问题要求:

  1. 问题一:根据附件 1 和附件 2,对数据进行分析和处理,筛选出与 PM2.5 浓度变化有关的因素,并说明筛选出的因素对 PM2.5 浓度影响的程度。
    附件一特征和示例数据如下:
    年 月 日 AQI 质量等级 PM10 O3 SO2 PM2.5 NO2 CO
    2015 1 1 85 良 119 74 41 46 58 1.1
    2015 1 2 110 轻度污染 144 20 56 83 79 1.4
    附件二特征和示例数据如下:
    V01301 V04001 V04002 V04003 V13305 V10004_700 V11291_700 V12001_700 V13003_700
    1 2015 1 1 0.0 1031.2 1.3 1.8 55.0
    1 2015 1 2 0.0 1025.8 0.8 5.2 61.0
    V01301 区站号(字符) -
    V04001 年 年
    V04002 月 月
    V04003 日 日
    V13305 降水量 毫米
    V10004_700 平均气压 百帕
    V11291_700 平均2分钟风速 米/秒
    V12001_700 平均气温 摄氏度(℃)
    V13003_700 平均相对湿度 百分率
  2. 问题二:自行划分训练集和测试集,根据附件 1 和附件 2,基于问题一构建 PM2.5 浓 度多步预测模型,分别使用均方根误差(RMSE)对 3 步、5 步、7 步、12 步预测效果进 行评估,其结果请用表 1 格式在正文中具体给出,并对测试集及其预测结果进行可视化。 同时,用该模型预测附件 3 所给定时间的 PM2.5 浓度,其结果请用表 2 格式在正文中具 体给出。
    表 1 PM2.5 浓度预测的 RMSE 结果(样表)
    预测步长 3 步预测 5 步预测 7 步预测 12 步预测
    RMSE
    RMSE 表 2 PM2.5 浓度预测结果(样表)
    日期(年/月/日) 20**// 20**// … 20**//
    PM2.5
  3. 问题三:构建 AQI 多步预测模型,使用均方根误差(RMSE)对建模效果进行评估, 并对测试集及其预测结果进行可视化。同时,用该模型预测附件 3 所给定时间的 AQI,并 给出每天空气质量的预警等级,其结果请用表 3 和表 4 格式在正文中具体给出。
    表 3 AQI 预测结果(样表)
    日期(年/月/日) 20**// 20**// … 20**//
    AQI
    预警等级颜色
    表 4 预警等级颜色次数汇总 (样表)
    预警等级颜色 蓝色 黄色 橙色 红色 无 合计
    天数(天)

第一题

分析附件一和附件二可知,我们需要对这个两个附件的年月日数据进行合并。
第一步:导入数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression, Lasso
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

加载附件一数据

data1 = pd.read_excel(“data/附件1.xlsx”)

加载附件二数据

data2 = pd.read_ex

这是一个典型的二分类问,可以尝试使用逻辑回归、支持向量机、随机森林等算法进行建模。以下是一种基于Python的实现方法: 1. 首先,读取“类别1-患病.xls”和“类别2-正常.xls”表格的数据,将它们合并成一个数据集,并为每个样本添加一个标签,患病标记为1,正常标记为0。 ```python import pandas as pd # 读取数据 data1 = pd.read_excel('train_data/类别1-患病.xls') data2 = pd.read_excel('train_data/类别2-正常.xls') # 添加标签 data1['label'] = 1 data2['label'] = 0 # 合并数据 data = pd.concat([data1, data2], axis=0, ignore_index=True) ``` 2. 接下来,将数据集划分为训练集和验证集,一般采用70%的数据作为训练集,30%的数据作为验证集。 ```python from sklearn.model_selection import train_test_split # 划分训练集和测试集 train_data, val_data, train_label, val_label = train_test_split(data.iloc[:, :-1], data.iloc[:, -1], test_size=0.3, random_state=42) ``` 3. 对训练集进行特征工程,一般包括数据清洗、特征选择、特征缩放等步骤。这里可以先尝试使用随机森林进行特征选择。 ```python from sklearn.ensemble import RandomForestClassifier # 特征选择 rf = RandomForestClassifier(n_estimators=100, random_state=42) rf.fit(train_data, train_label) importance = rf.feature_importances_ index = importance.argsort()[::-1][:10] # 取前10个重要特征 train_data = train_data.iloc[:, index] val_data = val_data.iloc[:, index] ``` 4. 训练模型,这里以逻辑回归为例。 ```python from sklearn.linear_model import LogisticRegression # 训练模型 lr = LogisticRegression(random_state=42) lr.fit(train_data, train_label) ``` 5. 在验证集上进行预测,计算准确率、召回率、F1值等指标,调整模型参数。 ```python from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # 预测验证集 val_pred = lr.predict(val_data) # 计算指标 print('Accuracy:', accuracy_score(val_label, val_pred)) print('Precision:', precision_score(val_label, val_pred)) print('Recall:', recall_score(val_label, val_pred)) print('F1:', f1_score(val_label, val_pred)) ``` 6. 对测试集进行预测,并在最后一列“预测类别”中标记预测结果。 ```python test_data = pd.read_excel('test_data/test.xls') test_data = test_data.iloc[:, index] # 取前10个重要特征 test_pred = lr.predict(test_data) # 标记预测结果 test_data['预测类别'] = ['患病' if x == 1 else '正常' for x in test_pred] test_data.to_excel('test_data/test_pred.xls', index=False) ``` 注意,以上只是一种简单的实现方法,还可以尝试其他算法、特征工程方法等进行模型优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值