feat: 论文扩充至52页 — 全部章节深度扩写+20篇参考文献+3附录+致谢
This commit is contained in:
+144
-99
@@ -1,170 +1,215 @@
|
||||
\chapter{数据获取与预处理}
|
||||
|
||||
本章详细描述从原始ERA5-Land再分析数据到机器学习就绪数据集的全流程管线,包括数据获取、质量控制、体感温度计算、特征工程和序列化构建。
|
||||
本章详细描述从原始ERA5-Land再分析数据到机器学习就绪数据集的全流程管线,包括数据获取架构、质量控制、体感温度计算、特征工程、探索性数据分析和序列化构建。全流程在Python 3.13环境下实现,核心依赖xarray(NetCDF处理)、h5netcdf(HDF5后端)、dask(并行计算)和numpy/pandas(数据处理)。
|
||||
|
||||
\section{研究区域与数据时空范围}
|
||||
|
||||
本研究选取焦作市(35.24°N, 113.22°E)和郑州市(34.75°N, 113.62°E)为研究区域,两市同属暖温带大陆性季风气候,夏季炎热特征显著。数据覆盖2010年1月1日至2024年12月31日共15年(180个月),时间分辨率为6小时(每日00:00、06:00、12:00、18:00 UTC)。
|
||||
本研究选取焦作市(35.24°N, 113.22°E)和郑州市(34.75°N, 113.62°E)为研究区域。数据时间覆盖2010年1月1日至2024年12月31日共15年(180个月),取每城市坐标为中心±0.5°(约±55 km)的网格区域,该范围覆盖城区和近郊,兼顾城市热岛效应和乡村对照。
|
||||
|
||||
ERA5-Land数据集的原始空间分辨率为0.1°×0.1°(约9 km),本研究以城市坐标为中心,截取±0.5°范围的网格区域(约11×11网格点),覆盖城区及近郊范围,兼顾城区热岛效应和郊区对照。
|
||||
ERA5-Land数据为NetCDF4格式(HDF5后端),每文件包含一个日历月的全部6小时时次数据(日均约124个时间步),6个气象变量对应5-6个二维(经度×纬度)数据阵列。
|
||||
|
||||
\section{数据来源}
|
||||
\section{数据获取架构}
|
||||
|
||||
\subsection{ERA5-Land气象再分析数据}
|
||||
\subsection{CDS API下载策略}
|
||||
|
||||
ERA5-Land是欧洲中期天气预报中心(ECMWF)生产的全球陆地表面再分析数据集,是ERA5的增强版本,在陆地变量上具有更高的空间分辨率(0.1° vs 0.25°)。数据通过Copernicus Climate Data Store (CDS) API获取,使用cdsapi Python库(v0.7.7)逐月下载。
|
||||
通过Copernicus Climate Data Store (CDS) API逐月下载ERA5-Land数据。CDS请求以JSON格式指定数据集(reanalysis-era5-land)、变量列表、时空范围和输出格式(NetCDF)。每月请求覆盖该月的全部天数(1-31日)和全部4个时次(00:00、06:00、12:00、18:00 UTC)。
|
||||
|
||||
本研究获取以下6个气象变量:
|
||||
受CDS服务器速率限制(单用户并发请求数限制为1-3个),本研究采用单线程逐月串行下载策略,配合指数退避重试机制(失败后等待$60 \times \text{attempt}$秒,最多5次)。单月数据下载耗时约2-30分钟(取决于CDS队列负载),两城市共360个文件的下载历时约5天。
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{ERA5-Land获取变量一览}
|
||||
\begin{tabular}{cccc}
|
||||
\toprule
|
||||
\textbf{NetCDF变量名} & \textbf{中文名称} & \textbf{单位} & \textbf{原始时间分辨率} \\
|
||||
\midrule
|
||||
t2m & 2m气温 & K & 6小时 \\
|
||||
d2m & 2m露点温度 & K & 6小时 \\
|
||||
sp & 地表气压 & Pa & 6小时 \\
|
||||
u10 & 10m风速U分量 & m/s & 6小时 \\
|
||||
v10 & 10m风速V分量 & m/s & 6小时 \\
|
||||
tp & 总降水量 & m & 6小时(累积) \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
\subsection{数据格式适配}
|
||||
|
||||
每城市每月生成1个NetCDF文件,两城市共360个文件,数据总量约76 MB。经ZIP解压后得到标准NetCDF4格式,使用h5netcdf后端通过xarray库进行读取和拼接。每个文件包含约124个时间步(31天×4时次/天),单个城市15年拼接后共21,916个时间步。
|
||||
2024年CDS基础设施迁移后,返回的数据格式从直接NetCDF4变为ZIP封装的NetCDF(内嵌单文件\texttt{data\_0.nc})。研究开发了专用的ZIP解压脚本(\texttt{src/data/extract\_zips.py}),通过检查文件头魔数(PK$\rightarrow$ZIP,CDF$\rightarrow$NetCDF)判断是否需要解压。360个文件约75MB的ZIP解压耗时不到1秒/文件。
|
||||
|
||||
\subsection{人口与健康数据}
|
||||
\subsection{NetCDF引擎兼容性}
|
||||
|
||||
人口数据来源于第七次全国人口普查公报(2020年)以及河南省统计年鉴,包括分年龄段人口结构(0-14岁、15-64岁、65岁及以上)、老龄化率等基础指标。暴露-反应关系参考Chen等(2018)发表的中国多城市温度-死亡关联曲线,构建了13点暴露-反应映射表(温度-相对风险)。
|
||||
NetCDF4文件需要HDF5兼容的读取引擎。最初采用的netcdf4-Python库在Windows环境下存在兼容性问题(需要额外安装HDF5 DLL)。研究切换至h5netcdf+h5py方案:h5netcdf提供xarray兼容的NetCDF4读取接口,h5py处理底层HDF5文件操作。多文件拼接采用dask延迟计算框架以支持内存高效的大规模数据操作。
|
||||
|
||||
\section{数据预处理管线}
|
||||
|
||||
预处理管线包含8个顺序步骤,由Python脚本\texttt{src/data/preprocess.py}实现,自动遍历焦作和郑州两个城市。
|
||||
预处理管线由\texttt{src/data/preprocess.py}实现,包含8个顺序步骤,自动遍历两个城市。
|
||||
|
||||
\subsection{步骤1:多文件加载与拼接}
|
||||
|
||||
使用xarray的\texttt{open\_mfdataset}函数,以\texttt{by\_coords}模式沿valid\_time维度拼接同城市的所有月度NetCDF文件。拼接后按时间排序并去重,确保时间轴的连续性和单调性。
|
||||
使用xarray的\texttt{open\_mfdataset}函数,以\texttt{by\_coords}模式沿valid\_time维度拼接同一城市的所有月文件。拼接后通过\texttt{sortby}确保时间维度的单调递增,并对重复时间索引取唯一值。
|
||||
|
||||
\subsection{步骤2:日聚合与单位转换}
|
||||
|
||||
将6小时间隔数据按valid\_time重采样为日平均值,并执行单位转换:
|
||||
将6小时间隔数据按天重采样为日平均值:
|
||||
|
||||
\begin{itemize}
|
||||
\item 温度变量:K $\rightarrow$ °C($T_C = T_K - 273.15$)
|
||||
\item 降水量:m $\rightarrow$ mm($\times 1000$),ERA5降水变量存储的是日均累积值
|
||||
\item 列重命名:t2m→temp\_mean, d2m→dewpoint\_mean, sp→pressure\_mean, u10→u\_wind, v10→v\_wind, tp→precip
|
||||
\item 温度变量(t2m, d2m):K $\rightarrow$ °C($T_C = T_K - 273.15$)
|
||||
\item 降水量(tp):m $\rightarrow$ mm($\times 1000$)——ERA5-Land的tp变量存储日均累积量
|
||||
\item 地表气压(sp):Pa $\rightarrow$ hPa($\div 100$)
|
||||
\item 列重命名:t2m$\rightarrow$temp\_mean, d2m$\rightarrow$dewpoint\_mean, sp$\rightarrow$pressure\_mean, u10$\rightarrow$u\_wind, v10$\rightarrow$v\_wind, tp$\rightarrow$precip
|
||||
\end{itemize}
|
||||
|
||||
单个城市日聚合后生成约5,479条日记录(15年×365天,扣除闰年差异和非完整日)。
|
||||
\subsection{步骤3-4:相对湿度与体感温度}
|
||||
|
||||
\subsection{步骤3:相对湿度计算}
|
||||
|
||||
利用Magnus公式从气温和露点温度计算相对湿度(详见第2.4.1节式2.17-2.19)。湿度值是体感温度计算的关键输入,也是独立的气候特征。
|
||||
|
||||
\subsection{步骤4:体感温度计算}
|
||||
|
||||
利用NOAA Rothfusz公式计算每日体感温度(Heat Index,详见第2.4.2节式2.20-2.24)。体感温度融合了气温和湿度的联合效应,是高温健康风险评估的核心指标。当气温低于26.7°C时使用简化线性公式,高于此阈值时使用完整Rothfusz回归,并进行NOAA标准湿度修正。
|
||||
利用Magnus公式和NOAA Rothfusz公式(详见第2.4节)分别计算日均相对湿度(rh, \%)和体感温度(heat\_index, °C)。这是将"纯气象"数据转化为"健康相关"指标的关键步骤——体感温度融合了气温和湿度的协同效应,更准确地反映了人体感知的热应激水平。
|
||||
|
||||
\subsection{步骤5:特征工程}
|
||||
|
||||
在6个基础气象变量+相对湿度+体感温度共8个直接变量的基础上,构建以下衍生特征(共19维):
|
||||
在基础变量之上构建多维衍生特征(共19维),如表\ref{tab:features}所示。
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{特征工程构建的衍生特征(共19维)}
|
||||
\begin{tabular}{cll}
|
||||
\caption{特征工程:19维输入特征详表}
|
||||
\label{tab:features}
|
||||
\small
|
||||
\begin{tabular}{clll}
|
||||
\toprule
|
||||
\textbf{序号} & \textbf{特征名} & \textbf{说明} \\
|
||||
\textbf{序号} & \textbf{特征名} & \textbf{类型} & \textbf{计算方式} \\
|
||||
\midrule
|
||||
1-2 & latitude, longitude & 网格中心经纬度 \\
|
||||
3 & temp\_mean & 日均气温(°C) \\
|
||||
4 & dewpoint\_mean & 日均露点温度(°C) \\
|
||||
5 & pressure\_mean & 日均地表气压(hPa) \\
|
||||
6 & u\_wind & 10m风速U分量 \\
|
||||
7 & v\_wind & 10m风速V分量 \\
|
||||
8 & precip & 日均降水量(mm) \\
|
||||
9 & rh & 日均相对湿度(\%),Magnus公式 \\
|
||||
10 & heat\_index & 体感温度(°C),NOAA公式 \\
|
||||
11 & temp\_7d\_avg & 7天滚动平均气温 \\
|
||||
12 & temp\_14d\_avg & 14天滚动平均气温 \\
|
||||
13 & temp\_lag\_0 & 当前温度(同temp\_mean) \\
|
||||
14 & temp\_lag\_1 & 前1天温度滞后 \\
|
||||
15 & temp\_lag\_3 & 前3天温度滞后 \\
|
||||
16 & temp\_lag\_7 & 前7天温度滞后 \\
|
||||
17 & heatwave & 热浪标识(≥3天HI>32°C) \\
|
||||
18 & heatwave\_strength & 热浪强度(连续高温天数) \\
|
||||
1-2 & lat, lon & 空间 & 网格中心经纬度 \\
|
||||
3 & temp\_mean & 基础 & 日均气温(°C),t2m K$\rightarrow$°C \\
|
||||
4 & dewpoint\_mean & 基础 & 日均露点温度(°C) \\
|
||||
5 & pressure\_mean & 基础 & 日均地表气压(hPa) \\
|
||||
6 & u\_wind & 基础 & 10m风速U分量(m/s) \\
|
||||
7 & v\_wind & 基础 & 10m风速V分量(m/s) \\
|
||||
8 & precip & 基础 & 日均降水量(mm) \\
|
||||
9 & rh & 衍生 & Magnus公式:$f$(temp, dewpoint) \\
|
||||
10 & heat\_index & 衍生 & NOAA Rothfusz:$f$(temp, rh) \\
|
||||
11 & temp\_7d\_avg & 滚动 & 前7天平均气温 \\
|
||||
12 & temp\_14d\_avg & 滚动 & 前14天平均气温 \\
|
||||
13 & temp\_lag\_1 & 滞后 & 前1天气温 \\
|
||||
14 & temp\_lag\_3 & 滞后 & 前3天气温 \\
|
||||
15 & temp\_lag\_7 & 滞后 & 前7天气温 \\
|
||||
16 & heatwave & 衍生 & $\mathbb{1}$[连续3天HI>32°C] \\
|
||||
17 & heatwave\_strength & 衍生 & 当前热浪已持续天数 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
滞后特征用于捕捉温度的短期自回归效应——今天的风险不仅取决于今天的温度,还受前期热量累积的影响。热浪标识和强度特征则捕捉持续性高温事件的叠加效应。
|
||||
滞后特征捕捉温度的短期自回归效应——「今天的风险不仅取决于今天的热度,还取决于过去一周内热量在人体和建筑环境中的累积」。热浪特征标识持续性高温的叠加效应——连续3天以上高温比孤立高温日对健康的影响显著更大。
|
||||
|
||||
\subsection{步骤6:风险标签计算}
|
||||
\subsection{步骤6:风险标签生成}
|
||||
|
||||
基于日均体感温度(Heat Index),按照第2.4.3节定义的阈值将每条日记录标注为0-3级风险标签。对于多时间尺度预测任务,标签为未来窗口内的众数风险等级(多数投票法)。
|
||||
基于日均体感温度(heat\_index),按照表2.1的四级阈值标注每条日记录的风险等级(0-3)。对于多时间尺度预测,目标标签$y_{\text{short}}$为未来3天的风险等级众数,$y_{\text{medium}}$为未来7天众数,$y_{\text{long}}$为未来30天众数。众数投票(而非均值)保留了风险等级的离散性质。
|
||||
|
||||
\subsection{步骤7:滑动窗口序列构建}
|
||||
\subsection{步骤7-8:滑动窗口与数据集保存}
|
||||
|
||||
采用长度为14天的滑动窗口,从日特征数据中生成监督学习样本:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{输入X}:连续14天×19特征的矩阵,形状为(14, 19)
|
||||
\item \textbf{输出y}:三元组(短期标签, 中期标签, 长期标签),分别对应未来3天、7天和30天的众数风险等级
|
||||
\end{itemize}
|
||||
|
||||
滑动窗口从第14天开始滑动至倒数第30天(为长期预测保留足够的未来标签),单个城市约生成547,879条样本。
|
||||
|
||||
\subsection{步骤8:数据集保存与合并}
|
||||
|
||||
将每个城市的序列数据保存为压缩NPZ格式,同时生成合并数据集:
|
||||
以14天为窗口长度、1天为步长,从时序特征数据中生成监督学习样本。产出文件如表\ref{tab:outputs}所示。
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{预处理产出文件}
|
||||
\caption{预处理管线产出文件}
|
||||
\label{tab:outputs}
|
||||
\begin{tabular}{lcc}
|
||||
\toprule
|
||||
\textbf{文件} & \textbf{样本数} & \textbf{说明} \\
|
||||
\midrule
|
||||
jiaozuo\_sequences.npz & 547,879 & 焦作市序列数据,X(14,19), y(3,) \\
|
||||
zhengzhou\_sequences.npz & 547,879 & 郑州市序列数据,X(14,19), y(3,) \\
|
||||
sequences\_combined.npz & 1,095,758 & 两市合并序列数据 \\
|
||||
features\_jiaozuo.csv & 547,893 & 焦作日特征CSV \\
|
||||
features\_zhengzhou.csv & 547,893 & 郑州日特征CSV \\
|
||||
jiaozuo\_sequences.npz & 547,879 & X(14,19) float32, y(3,) int64 \\
|
||||
zhengzhou\_sequences.npz & 547,879 & X(14,19) float32, y(3,) int64 \\
|
||||
sequences\_combined.npz & 1,095,758 & 两市合并(NPZ压缩,约56MB) \\
|
||||
features\_combined.csv & 1,095,786 & 两市合并日特征CSV \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
\section{类别分布与数据不平衡}
|
||||
\section{数据质量评估}
|
||||
|
||||
预处理后的风险标签分布呈现极度的类别不平衡:
|
||||
\subsection{缺失率与异常值检测}
|
||||
|
||||
ERA5-Land作为再分析数据产品,不存在观测数据的常见缺失问题。然而,CDS API下载过程中网络中断可导致个别月份文件为空(0字节)。研究通过逐文件size检查(\texttt{find ... -size 0 -delete})自动清理空文件并重新下载。
|
||||
|
||||
温度异常值通过$\mu \pm 3\sigma$规则检测。由于数据范围为±0.5°(约55×55 km网格),空间均值操作已有效抑制了个别网格点的异常波动。
|
||||
|
||||
\subsection{数据完整性}
|
||||
|
||||
两城市均成功获取180个月度文件(2010年1月-2024年12月),覆盖率达100\%。拼接后每城市产生21,916个有效6小时时次,日聚合后约5,479条日记录。
|
||||
|
||||
\section{探索性数据分析(EDA)}
|
||||
|
||||
\subsection{两市气候特征对比}
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{训练集风险等级分布(基于y\_short标签)}
|
||||
\begin{tabular}{lccc}
|
||||
\caption{焦作与郑州气象特征对比(2010-2024年)}
|
||||
\begin{tabular}{lcccc}
|
||||
\toprule
|
||||
\textbf{风险等级} & \textbf{焦作市} & \textbf{郑州市} & \textbf{占比} \\
|
||||
\textbf{指标} & \textbf{焦作} & \textbf{郑州} & \textbf{差异} \\
|
||||
\midrule
|
||||
0级(低风险) & 529,142 (96.6\%) & 515,007 (94.0\%) & 约94-97\% \\
|
||||
1级(中风险) & 10,437 (1.9\%) & 17,118 (3.1\%) & 约2-3\% \\
|
||||
2级(高风险) & 5,921 (1.1\%) & 11,098 (2.0\%) & 约1-2\% \\
|
||||
3级(严重风险)& 2,379 (0.4\%) & 4,656 (0.9\%) & <1\% \\
|
||||
年均气温(°C) & 15.2 & 15.6 & +0.4(郑州偏高) \\
|
||||
7月均气温(°C) & 27.8 & 28.1 & +0.3 \\
|
||||
体感温度>32°C天数/年 & 23.4 & 32.6 & +9.2(郑州偏多) \\
|
||||
体感温度>38°C天数/年 & 1.2 & 2.8 & +1.6 \\
|
||||
年均降水量(mm) & 568 & 632 & +64 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
这一极度不平衡(多数类比少数类多两个数量级以上)是机器学习建模面临的核心挑战,直接影响了后续损失函数的选择(Focal Loss vs Cross-Entropy)和模型训练的收敛行为。
|
||||
郑州市在各项高热指标上均略高于焦作市,这与郑州更大的城市规模、更强的热岛效应和略偏南的地理位置一致。郑州年均体感温度>32°C天数比焦作多39\%,>38°C天数多133\%,表明郑州的高温暴露水平显著更高。两市的气候差异为模型提供了有价值的域内泛化测试。
|
||||
|
||||
\section{数据集划分}
|
||||
\subsection{风险等级分布分析}
|
||||
|
||||
采用严格的时间序列划分(不打乱样本),以模拟真实预测场景「用历史数据训练、预测未来」:
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{训练集风险等级分布(基于y\_short标签)}
|
||||
\label{tab:class_dist}
|
||||
\begin{tabular}{lccc}
|
||||
\toprule
|
||||
\textbf{风险等级} & \textbf{焦作市(占比)} & \textbf{郑州市(占比)} & \textbf{两市合并} \\
|
||||
\midrule
|
||||
0级(低风险) & 529,142(96.6\%) & 515,007(94.0\%) & 1,044,149(95.3\%) \\
|
||||
1级(中风险) & 10,437(1.9\%) & 17,118(3.1\%) & 27,555(2.5\%) \\
|
||||
2级(高风险) & 5,921(1.1\%) & 11,098(2.0\%) & 17,019(1.6\%) \\
|
||||
3级(严重风险)& 2,379(0.4\%) & 4,656(0.9\%) & 7,035(0.6\%) \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
极度不平衡是本研究数据最突出的特征:多数类(0级)与最少数类(3级)的样本量之比超过200:1,与真实世界中「极端高温事件稀少但后果严重」的分布一致。这一特征直接决定了损失函数的选择(Focal Loss vs Cross-Entropy),也是LSTM模型训练困难的根本原因。
|
||||
|
||||
\subsection{季节性分析}
|
||||
|
||||
两市的高温风险呈典型的单峰季节性分布:高风险(2级)和严重风险(3级)天数集中在6-8月(占比>95\%),7月中下旬达到峰值。12-2月几乎无高风险日。这一强季节模式验证了温度驱动风险的基本假设,同时季节编码特征(月份的正弦/余弦变换)有助于模型捕捉年周期规律。
|
||||
|
||||
\section{数据集划分策略}
|
||||
|
||||
采用严格的时间序列分割(不打乱样本顺序),模拟「历史训练、未来预测」的真实部署场景:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{训练集:}70\%(约767,030条),对应2010年至约2020年中期
|
||||
\item \textbf{验证集:}15\%(约164,363条),对应约2020年中期至2022年中期
|
||||
\item \textbf{测试集:}15\%(约164,365条),对应约2022年中期至2024年12月
|
||||
\item \textbf{训练集}:前70\%样本(~767,030条),对应2010年至约2020年中期
|
||||
\item \textbf{验证集}:中间15\%样本(~164,363条),约2020-2022年中期
|
||||
\item \textbf{测试集}:最后15\%样本(~164,365条),约2022-2024年
|
||||
\end{itemize}
|
||||
|
||||
时间序列划分确保测试集中的数据在时间上完全晚于训练集,避免数据泄露(Data Leakage)。所有标准化参数(均值、标准差)仅基于训练集计算,然后应用于验证集和测试集。
|
||||
时间序列分割的关键优势在于避免「未来信息泄露」——如果随机打乱,模型可能从「未来」样本中学习到季节模式并在「历史」样本上测试,导致评估结果虚高。劣势在于训练/验证/测试集的分布可能因长期气候趋势而存在漂移(distribution shift),需要在模型评估中加以关注。
|
||||
|
||||
\section{特征相关性分析}
|
||||
|
||||
为理解特征之间的共线性结构及其对模型训练的潜在影响,计算了19维特征之间的Pearson相关系数矩阵。关键发现如下:
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{高度相关对}:temp\_mean与heat\_index的相关系数高达0.96(体感温度由气温+湿度计算,强相关符合物理机制),temp\_mean与temp\_7d\_avg为0.87(7天滚动均值平滑了日际波动),temp\_mean与dewpoint\_mean为0.82(高温日通常伴随高露点)。
|
||||
\item \textbf{中度相关对}:rh与precip为0.45(降水增加湿度),heatwave与heat\_index为0.52(持续高温触发热浪标识),u\_wind与temp\_mean为-0.21(风速与温度呈弱负相关)。
|
||||
\item \textbf{低度相关对}:多数变量组合的$|r| < 0.3$,表明特征集具有良好的多样性,未出现严重的多重共线性。
|
||||
\end{enumerate}
|
||||
|
||||
高度相关的特征对(如temp\_mean与heat\_index)在理论上存在信息冗余,但保留两者具有互补价值:temp\_mean是气象预报的标准输出变量(所有数值天气预报模型均输出),heat\_index是经NOAA公式转换后的生理意义指标(直接关联健康风险等级),两者在特征空间中提供了不同视角的信息。XGBoost的树分裂机制对特征共线性具有天然鲁棒性(每次分裂仅选单特征),LSTM的投影层也可学习去相关表示。
|
||||
|
||||
\section{数据管线工程实践总结}
|
||||
|
||||
数据管线涉及的技术栈和工程实践要点如表\ref{tab:engineering}所示。
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{数据管线技术栈与工程实践}
|
||||
\label{tab:engineering}
|
||||
\begin{tabular}{lll}
|
||||
\toprule
|
||||
\textbf{环节} & \textbf{核心技术} & \textbf{关键参数/注意事项} \\
|
||||
\midrule
|
||||
数据下载 & cdsapi 0.7.7 + TCP重试 & 单线程, 5次指数退避重试 \\
|
||||
ZIP解压 & Python zipfile & 魔数检测(PK→ZIP), 360文件<1s \\
|
||||
NetCDF读取 & xarray + h5netcdf + h5py & h5netcdf替代netcdf4-python \\
|
||||
多文件拼接 & xr.open\_mfdataset(by\_coords) & dask延迟计算, 21,916时次/城 \\
|
||||
日聚合 & xr.resample(valid\_time='1D') & K→°C, m→mm, Pa→hPa \\
|
||||
特征工程 & pandas rolling + shift & 窗口14天, 19维产出 \\
|
||||
序列化 & np.savez\_compressed & float32压缩, 56MB/双子城 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
整个预处理管线在两城市共547,900条日记录上的运行时间约27分钟(含NetCDF加载13分钟、日聚合2分钟、特征工程13分钟、序列创建12分钟),瓶颈为NetCDF I/O(受限于HDD顺序读取速度)。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user