0c0a295f09f744b2a36309a38dfc696ad5162360
作战体系数据清洗与标准化系统
项目简介
本项目用于处理异质作战体系节点的原始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:
pip install numpy pandas
2. 运行清洗
在项目根目录下执行:
python src/cleaner.py
程序会读取 data/raw_data_sample.json,处理后生成:
data/cleaned_data_final.json(清洗后的数据)report/detailed_cleaning_report.json(详细清洗报告)
输出结果示例
清洗前 (Raw):
{
"MOBILITY": -0.5,
"STRIKE_ACCURACY": 1.5,
"COMMUNICATION_RANGE": 102.8116
}
清洗后 (Cleaned):
{
"MOBILITY": 0.5,
"STRIKE_ACCURACY": 1.0,
"COMMUNICATION_RANGE": 102.81
}
清洗报告说明
detailed_cleaning_report.json 中包含:
- summary:总记录数、最终记录数、去重数量
- details:各字段缺失值填充数量、异常值修正数量及示例、噪声平滑处理记录、标准化说明
Description
Languages
Python
100%