# 作战体系数据清洗与标准化系统 ## 项目简介 本项目用于处理异质作战体系节点的原始JSON数据。系统能够自动识别并修复数据中的噪声、缺失值、异常值,并将关键效能指标标准化至 [0, 1] 区间,最终输出符合建模要求的高质量数据集。 ## 目录结构 ``` project/ ├── data/ │ ├── raw_data_sample.json # 原始输入数据(包含噪声和错误) │ └── cleaned_data_final.json # 清洗后的输出数据 ├── src/ │ └── cleaner.py # 清洗运行程序 ├── report/ │ └── detailed_cleaning_report.json # 详细清洗报告 └── README.md # 项目说明文档 ``` ## 清洗流程说明 程序按以下顺序依次执行五步清洗操作: ### 1. 去重 (clean_duplicates) - **依据**:按 `TARGET_ID` 去重,同一目标只保留一条记录 - **策略**:若存在 `CREATED_TIME` 字段,按创建时间倒序排序后保留最新一条;否则保留第一条 - **目的**:消除重复录入的目标节点 ### 2. 缺失值填充 (handle_missing_values) - **范围**:对所有数值型列(除 ID 外)进行处理 - **策略**: - 先按 `ROLE_ID` 分组,用同类型单位的均值填充该组内缺失值 - 若分组后仍有缺失(如该组仅有一条记录),用全列均值兜底填充 - **目的**:保证数值字段完整,便于后续建模 ### 3. 异常值纠正 (correct_outliers) - **涉及字段**:`TARGET_RECOGNITION_CAPABILITY`、`STRIKE_ACCURACY`、`ANTI_JAMMING_CAPABILITY`、`ENVIRONMENT_ADAPTABILITY`、`MOBILITY` - **规则**: - 若值 < 0:取绝对值 - 若值 > 1:截断为 1.0 - **目的**:将效能指标统一限制在 [0, 1] 区间内 ### 4. 噪声平滑 (apply_kalman_filter) - **对象**:`COMMUNICATION_RANGE`(通信范围)字段 - **方法**:使用窗口大小为 3 的移动平均进行平滑(与卡尔曼滤波效果类似的时序平滑) - **结果**:数值保留 2 位小数 - **目的**:削弱测量噪声对连续数值的影响 ### 5. 标准化与输出 - 坐标精度统一为 2 位小数 - 时间戳统一为 ISO-8601 格式 - 输出清洗后 JSON 及详细报告(含各步骤的统计与示例) ## 快速开始 ### 1. 环境依赖 本项目仅依赖 Python 标准库及 NumPy/Pandas: ```bash pip install numpy pandas ``` ### 2. 运行清洗 在项目根目录下执行: ```bash python src/cleaner.py ``` 程序会读取 `data/raw_data_sample.json`,处理后生成: - `data/cleaned_data_final.json`(清洗后的数据) - `report/detailed_cleaning_report.json`(详细清洗报告) ## 输出结果示例 **清洗前 (Raw):** ```json { "MOBILITY": -0.5, "STRIKE_ACCURACY": 1.5, "COMMUNICATION_RANGE": 102.8116 } ``` **清洗后 (Cleaned):** ```json { "MOBILITY": 0.5, "STRIKE_ACCURACY": 1.0, "COMMUNICATION_RANGE": 102.81 } ``` ## 清洗报告说明 `detailed_cleaning_report.json` 中包含: - **summary**:总记录数、最终记录数、去重数量 - **details**:各字段缺失值填充数量、异常值修正数量及示例、噪声平滑处理记录、标准化说明