# 实验一：乘员舱降温数据初探与预处理

**实验目的：**\
\- 熟悉乘员舱瞬态降温项目的数据集结构和内容，了解主要变量（如光照强度、外部温度、车速、各风口风速/温度、乘客呼吸点温度等）及预测目标（乘员舱内部温度随时间的变化曲线）。

\- 掌握时间序列数据的基本清洗方法，包括缺失值填补、异常值检测与处理。

\- 深刻体会数据预处理在机器学习项目中的重要性，认识到数据准备通常占据整个项目约 **80%** 的时间。为后续建模打下高质量的数据基础。

**实验资源要求：**

\- **数据：** 已提供的乘员舱环境与温度时序数据集（包括传感器采集的舱内外环境参数和对应的舱内温度记录）。数据量较大，需保证运行环境有充足内存和存储空间。

\- **软件环境：** Python 3.x，Jupyter Notebook（可选），Pandas、NumPy等数据处理库，Matplotlib/Seaborn用于可视化。

\- **计算环境：** 配备高性能计算能力的计算机或服务器（多核CPU及充足内存），确保可以高效处理和分析大规模数据。

**实验时长：** 約3小时

**实验内容：** 本实验通过对原始数据集进行探索性分析和预处理，提升数据质量以服务后续建模。首先，学生将加载乘员舱降温数据集，对数据结构和各字段含义进行理解[\[1\]](file://file-egtdho8pxg6a5aomdg68ua/#:~:text=1.%E6%95%B0%E6%8D%AE%E6%8F%90%E4%BE%9B%E4%B8%8E%E6%94%AF%E6%8C%81%EF%BC%9A%E7%94%B2%E6%96%B9%E9%9C%80%E5%90%91%E4%B9%99%E6%96%B9%E6%8F%90%E4%BE%9B%E5%AE%8C%E6%88%90%E9%A1%B9%E7%9B%AE%E6%89%80%E9%9C%80%E7%9A%84%E7%9B%B8%E5%85%B3%E6%95%B0%E6%8D%AE%EF%BC%8C%E5%8C%85%E6%8B%AC%E4%BD%86%E4%B8%8D%E9%99%90%E4%BA%8E%E4%B9%98%E5%91%98%E8%88%B1%E5%86%85%E5%A4%96%E7%8E%AF%E5%A2%83%E6%95%B0%E6%8D%AE%EF%BC%8C%E5%A6%82%E5%85%89%E7%85%A7%E5%BC%BA%E5%BA%A6%E3%80%81%E5%A4%96%E9%83%A8%E6%B8%A9%E5%BA%A6%E3%80%81%E8%BD%A6%E9%80%9F%E3%80%81%E8%BD%A6%E8%88%B1%E5%86%85%E9%83%A8%E5%90%84%E9%A3%8E%E5%8F%A3%E7%9A%84%E9%A3%8E%E9%80%9F%E5%92%8C%E6%B8%A9%E5%BA%A6%E7%AD%89%EF%BC%8C%E4%BB%A5%E7%A1%AE%E4%BF%9D%E6%A8%A1%E5%9E%8B%20%E8%AE%AD%E7%BB%83%E5%92%8C%E9%A2%84%E6%B5%8B%E7%9A%84%E5%87%86%E7%A1%AE%E6%80%A7%E3%80%82%EF%BC%88%E5%9B%BE%20%E6%95%B0%E6%8D%AE%E8%BE%93%E5%85%A5%E5%8F%8A%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%E5%AE%9E%E4%BE%8B)。典型数据字段包括光照强度、车外温度、车辆速度、各空调出风口的风速与温度，以及乘员舱内关键位置（如乘客呼吸点）的温度等。这些变量共同影响乘员舱温度的动态变化过程，是建立预测模型的重要输入。接着，学生将对原始数据进行统计分析，计算各变量的基本统计量，绘制时间序列曲线，初步了解温度随时间的变化趋势以及环境因素的作用。数据探索阶段还需关注数据质量，例如是否存在缺失值或异常尖刺。高质量的数据是准确建模的前提，研究表明数据准备通常耗费分析师 最多达80% 的时间，因此本实验重点在于打好数据“地基”。

![](/files/8YtKokcHAuGpt7yWAu3F)

<p align="center">图1 各变量缺失值计数（原始）</p>

在完成基本认识后，学生将对数据进行清洗和预处理。首先处理缺失值，判断缺失模式并选择合理的方法填补（如线性插值、前后值填充或删除记录等）。然后检测异常值，可采用统计方法（如3σ原则）或基于物理常识判断（例如光照强度不可能为负、温度变化不应瞬间超出合理范围）。对于检测出的异常，根据情况进行修正：极端错误值可以插值平滑或剔除，以免对模型训练产生不良影响。最后，将清洗后的多源数据按时间对齐整合，确保各种传感器数据在统一时间线上匹配。这一步可能需要根据时间戳对不同来源的数据表进行合并，得到完整的时序输入-输出对。经过预处理，学生将得到一个干净、一致的数据集，为后续特征工程和模型训练做好准备。

![](/files/2BVE8RLBldgzDZWQij7S)

<p align="center">图2 舱内温度 3σ 异常点标注</p>

**实验步骤：**

### 1. 数据导入与概览（Ingestion & Schema Profiling）

**技术要点（多源+强校验）：**

* **文件完整性与一致性**：对每个源文件计算 size/hash/rowcount；自动识别压缩格式（.gz/.zip）、CSV 方言（分隔符/转义/引号）、BOM；统一字符集（优先 UTF-8），遇到 GBK/ANSI 触发重编码试读与告警。
* **强类型解析与模式校验**：用 schema（如 pandera/JSON-Schema） 显式约束字段名、单位、dtype（Float32/Int64\[NA]/category/string\[pyarrow]），并执行：
  * **单位统一**：温度统一℃（若摄氏/华氏混存，基于阈值与元数据自动侦测并转换），光照统一 W/m²（若为 lux，按配置/车窗透光系数估算换算或单列双单位并标注）。
  * **取值域静态规则**：如 speed ∈ \[0, 200] km/h，sunlight ≥ 0，vent\_temp ∈ \[0, 30]℃，违反者入“硬异常”队列。
* **时间戳治理**：统一时区（建议全部归一到 UTC 并保留原始本地时区列），校验单调递增性；统计 Δt 分布（直方图+众数）以反推采样频率；检测重复/倒序/跳秒；为不同源打上 source\_id/session\_id。
* **内存与存储优化**：大表先 lazy read（chunksize）抽样做初检；列按方差与基数降精度/分类化；对长文本字段进行哈希映射（保留字典），形成轻量训练视图。
* **泄漏前置检查**：明确目标列（舱内温度/曲线）与输入特征清单；禁止在训练集构造阶段使用任何未来信息（如滑窗标签必须严格右开区间）。

**验收口径：** 通过全部 schema 校验，时间戳单调性≥99.99%，单位/类型冲突为 0，重复行率 < 0.1%。

**产出物：** data\_catalog.json（字段字典+单位+dtype+合法域），ingestion\_report.html（完整性与异常摘要），首版“特征—目标映射表”。

### 2. 数据可视化探索（Exploratory & Multiscale Diagnostics）

**技术要点（多尺度+多视角）：**

* **单变量多尺度视图**：对每个关键变量绘制原始曲线/滚动均值(τ=30s, 300s)/滚动标准差；做 STL 分解（趋势/季节/残差）观察光照与温度的日内节律与随机成分。
* **相关与时滞结构**：
  * 计算 ACF/PACF（舱内温度）识别自相关阶数；
  * 计算 Cross-Correlation Function（如 vent\_speed → cabin\_temp，sunlight → cabin\_temp）估计物理反应时滞（例如降温相对送风的响应延迟）。
* **分布与稳健统计**：直方图/核密度 + 箱线/violin + Hampel/MAD 稳健 Z 分数对比 3σ，定位厚尾与尖峰；绘制Q-Q 图检视正态性。
* **多变量结构**：Spearman 相关热图 + 基于互信息的非线性依赖；Hexbin/密度散点（外温 vs 初始舱温、vent\_speed vs 温降斜率）验证物理直觉。
* **缺失与离群“热图”**：按时间轴绘制缺失矩阵（run-length 分布），并叠加异常标注（尖刺/越界/跳变），识别工况段落（空调切换、停车暴晒、车速高/低区）。
* **变点检测**：应用 PELT/BOCPD 等方法标出制度切换点（AC 开启、风量档位变化），为后续分段建模提供依据。

**验收口径：**&#x9700;形成可复现实验图册（至少：单变量多尺度、相关/时滞、稳健 vs 经典离群对比、缺失热图、变点标注），并给出3 条可检验假设（如“高光照+低速→初温更高且降温更慢”）。

**产出物：** eda\_plots/ 图集，eda\_notes.md（结论+待验证假设+风险清单）。

### 3. 缺失值处理（Missingness Characterization & Imputation）

**技术要点（机制识别+分情景插补）：**

* **缺失机制剖面**：计算缺失率时序曲线与共现相关（缺失是否集中在高光照/低速/特定时段）；区分 MCAR/MAR/MNAR（例如传感器过热停机→MNAR）。
* **策略分层**：
  * **短缺口（≤5×Δt）**：优先 时间插值（线性/样条/PCHIP 保形）+ 邻域约束（不跨越物理上下界）。
  * **中等缺口（5×Δt–5min）**：卡尔曼平滑/局部 ARIMA；或同源冗余（多风口取加权/近邻回归）补齐。
  * **长缺口/系统级停机**：保留 NaN + 生成缺失掩码列供模型使用；必要时剔除受影响窗口（训练样本构造时避免泄漏）。
  * **结构性缺失（MNAR）**：不做数值臆造；以“状态特征”（如 sensor\_down=1）显式进模型，或采用多重插补保留不确定性传播。
* **不确定性管理**：为被插补位置计算方差/置信区间（如卡尔曼协方差、GP 预测方差），并输出 imputed\_flag/impute\_method 及 impute\_uncertainty。
* **分组一致性**：按 session\_id/vehicle\_id 分组拟合插补器，防止跨车辆/场景的信息污染；所有插补仅基于**历史侧**（右开区间）以避免未来信息泄漏。

**验收口径：** 插补后连续性与物理合理性通过；缺失掩码与方法标识覆盖率 100%；对关键变量插补段 RMSE（与平滑真值/冗余源）降低≥30%。

**产出物：** imputation\_policy.yaml（策略与阈值），插补前后差异报告（含不确定性分布），带 \*\_mask 与 \*\_method 的数据表。

### 4. 异常值检测与处理（Outlier & Event Correction）

**技术要点（多模型融合检测+物理约束修复）：**

* **多通道检测框架**（并行打分、后融合）：
  * **统计规则**：3σ、IQR、稳健 Z（MAD）、Hampel（滚动窗）；
  * **时序结构**：Δ/Δ² 跳变检测、滚动 Z、STL 残差阈值、变点一致性；
  * **物理规则**：值域（负光照=不可能）、增速界（|dT/dt| ≤ 物理上限）、跨传感一致性（vent\_speed=0 且 vent\_temp≈外温时，舱温不应瞬降）。
  * **机器学习**：Isolation Forest/One-Class SVM/LOF 对多变量联合异常赋分（仅用于辅助标注，不直接自动改写）。
* **分类型修复**：
  * **尖刺/毛刺**：用邻域中位数/LOESS 局部回归替换；保留原值到 \*\_raw 以备审计。
  * **越界/不可能值**：置 NaN → 按第 3 步策略插补；同时计入“硬异常计数”。
  * **漂移/偏置**（整段传感器偏移）：基于与冗余源/标定段的偏置回归统一平移；写入 calibration\_note。
* **时滞与同步异常**：若发现系统性时滞（如风速峰值领先舱温响应 τ 秒），以交叉相关估计 τ，记录在 alignment\_lag（不在此步平移，留至第 5 步统一对齐）。
* **事后验证**：修复后重绘关键曲线与导数，确保无锯齿/无振铃；复算分布与稳健统计，异常占比显著下降。

**验收口径：** 异常识别召回率≥95%（以人工抽检为准）；修复后物理约束全部满足；关键变量的稳健方差（MAD）降低≥20%。

**产出物：** outlier\_report.jsonl（逐条记录：原因码、方法、置信度），correction\_changelog.md（可回溯变更）。

### 5. 数据对齐与整合（Alignment, Resampling & Feature Derivation）

**技术要点（多频率+多源时滞对齐）：**

* **统一时间基准**：确定主时间网格（如 1s）；所有源按 asof（带容差，如 ±0.5s）对齐到主网格；记录落点误差（snap\_delta）。
* **多速率/异步采样**：
  * **反采样与抗混叠**：高频流先做低通滤波再降采样；低频流采用前向保持+ 事件驱动补点；保留原采样频率 fs\_\* 列。
  * **跨源时滞校正**：基于第 2 步的 CCF/变点对齐，计算各源相对主流的最佳滞后 τ\*（可分场景/分段）；以不改动原始索引为前提，在特征派生时引入滞后特征（如 vent\_speed\_lag\_τ\*）。
* **一致性与去重**：处理重复时间戳（聚合为中位/均值，并计 dup\_count）；消除跨源冲突（单位/标度）；确保索引单调、无缺洞（对齐后再补）。
* **物理导出特征**（例）：
  * **送风强度指数**：vent\_intensity = f(vent\_speed, vent\_temp, ext\_temp)（可用 vent\_speed × (ext\_temp - vent\_temp) 近似换热“驱动力”）。
  * **辐照负荷指数**：solar\_index = sunlight × exposure\_factor（若缺窗户参数，保留相对量级并注明）。
  * **阶段标签**：依据变点生成 phase ∈ {热浸, 快速降温, 渐进稳态}；再派生分段斜率、阶段时长等。
  * **会话特征**：session\_id 粒度统计（起始温度、外温均值、平均车速）。
* **数据泄漏防护**：确保任何滞后/滚动特征仅使用历史窗口；训练/验证/测试按时间切分并对齐 session\_id，避免同一会话跨集合。

**验收口径：** 对齐失败率 < 0.1%；snap\_delta 中位数 < 0.2s；引入滞后后关键对相关系数提升显著（如 |ρ|↑≥0.1）。

**产出物：** aligned\_dataset.parquet（含派生特征/时滞列/质量标记），alignment\_metrics.csv（CCF、snap 误差、时滞表），feature\_derivation.md（可复现公式与参数）。

### 6. 结果保存（Versioned Artifact & Reproducibility）

**技术要点（版本化+可复现）：**

* **多格式落盘**：主数据以 Parquet(zstd/snappy)（压缩、高效 IO）；同时导出 CSV（互操作）与训练子集 npz/pickle；元数据 JSON 记录处理流水线（时间、软件版本、随机种子、关键参数）。
* **质量门控（Great Expectations/自定义断言）**：保存前自动跑校验套件：缺失率阈值、值域/增速/单调性、采样频率、重复行、标志列一致性（\*\_mask/\*\_method/dup\_count/snap\_delta），未通过即阻断发布。
* **版本与追溯**：采用 data\_version = YYYYMMDD.HHMM 命名；生成 CHANGELOG.md 对比上版（分布漂移、样本量变化、异常/缺失比率变化）；产出数据卡（Data Card）（用途、覆盖范围、局限性、公平性/偏差风险）。
* **原子写与校验**：先写临时文件后原子重命名；生成 SHA256 校验；提供小样本 head\_1k.csv 便于人工抽核。
* **切分索引固化**：保存 split\_indices.json（train/val/test 的时间/会话范围与行号），保证后续实验完全复现同一切分。

**验收口径：** 通过所有质量断言；与上版相比，无非预期分布漂移（以 PSI/KL 或均值±3σ 比较）；产物可在全新环境一键重现同样统计量。

**产出物：**

* 数据：aligned\_dataset.parquet、aligned\_dataset.csv、train\_val\_test\_indices.json；
* 元数据：processing\_meta.json、data\_card.pdf/html、CHANGELOG.md；
* 校验：ge\_validation\_report.html 或自定义 validation\_report.md。

![](/files/EY234g0qOMvk5Vlx3Q1h)

<p align="center">图3 出风口风速：原始 vs 清洗+平滑</p>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://temp-drop.brain-ol.com/shi-yan-yi-cheng-yuan-cang-jiang-wen-shu-ju-chu-tan-yu-yu-chu-li.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
