vivekkr620/MILITARY-INTELLIGENCE-DASHBOARD
GitHub: vivekkr620/MILITARY-INTELLIGENCE-DASHBOARD
基于全球恐怖主义数据库(GTD)构建的AI驱动数据可视化与预测分析仪表板,用于全球威胁事件的地理空间展示、趋势预测和攻击类型分类。
Stars: 1 | Forks: 0
# 🛡️ 基于 AI 的军事情报与威胁分析仪表板
一个交互式、多页面的 **Streamlit** 仪表板,用于探索、可视化和预测全球恐怖主义/威胁模式,数据基于 **Global Terrorism Database (GTD)**。该仪表板将地理空间可视化、国家级情报分析、机器学习攻击类型分类器、威胁等级预测、趋势预测以及 AI 生成的情报执行摘要整合在同一个应用程序中。
## 📌 概述
| | |
|---|---|
| **数据集** | Global Terrorism Database (GTD) — 181,691 起事件 · 205 个国家 |
| **框架** | Streamlit (Python) |
| **ML 模型** | Random Forest Classifier (攻击类型预测) |
| **可视化** | Plotly (交互式图表、地图、热力图) |
| **架构** | 多页面 Streamlit 应用 (`pages/` 目录) |
## ✨ 功能 / 模块
该应用程序被组织为一个 Streamlit 多页面应用。每个模块都作为独立的脚本存放在 `pages/` 目录中,并可通过左侧边栏进行访问。
### 1. 🏠 首页 (`1_Home.py`)
着陆仪表板,一目了然地展示 GTD 高层级统计数据:
- **事件:** 181,691
- **死亡人数:** 411,868
- **受伤人数:** 523,869
- **受影响国家:** 205
- 一张展示全球事件数量随时间变化的 **“历年袭击”** 趋势折线图。
### 2. 🌍 全球威胁地图 (`2_Global_Threat_Map.py`)
渲染一张世界地图,将每一起记录在案的事件绘制为地理位置点,并根据 **攻击类型** (爆炸/爆炸物、武装袭击、暗杀、劫持人质、设施/基础设施袭击、劫机、徒手袭击等)进行颜色编码——从而提供对全球热点地区的直观视觉感知。
### 3. 🌐 国家分析 (`3_Country_Analysis.py`)
国家级别的“情报报告”深入分析。选择一个国家(例如 *印度*)即可查看:
- 事件 / 死亡 / 受伤人数以及活跃组织的数量
- 该特定国家的 **历年袭击** 趋势
- 以交互式饼图展示的 **攻击类型** 细分
### 4. 🎯 攻击预测 (`4_Attack_Prediction.py`)
一个交互式的 **基于 ML 的预测表单**。分析师输入事件参数:
- 国家、地区、武器类型、目标类型、恐怖组织
- 攻击是否成功?是否为自杀式袭击?
- 死亡人数、受伤人数
训练有素的 Random Forest 模型会返回 **预测的攻击类型** 以及 **预测置信度分数**(例如 *爆炸/爆炸物 — 92.00% 置信度*)。
### 5. 🚨 威胁等级预测 (`5_Threat_Level.py`)
一个 **AI 威胁等级预测系统**,可将给定输入的整体安全风险分类为 **低 / 中等 / 高 / 极高**,并显示:
- 带有置信度分数的预测威胁等级
- 所有威胁类别的概率分布图
### 6. 📈 预测 (`6_Forecasting.py`)
利用历史 GTD 数据预测各国的 **未来袭击趋势**:
- 历史与预测袭击数量对比折线图
- 一张 **预测结果** 表(逐年预测的袭击次数)
- **增长分析** — 当前袭击次数、5 年预测及增长百分比
- **风险评估** 结论(例如 *威胁趋势:下降中*)
- 提供将 **预测结果下载为 CSV** 的选项
### 7. 🧠 AI 情报报告 (`7_AI_Intelligence.py`)
自动生成一份综合数据集的 **指挥官就绪的执行摘要**:
- 关键情报指标(事件、死亡人数、受伤人数、总体威胁等级)
- 项目符号形式的 **执行摘要**(受影响最严重的国家、最活跃的组织、最常见的攻击/武器类型等)
- **前 10 个高风险国家** 条形图
### 8. 🗂️ 数据浏览器 (`8_Data_Explorer.py`)
供分析师和数据科学家使用的原始数据探索工具:
- 按城市或国家搜索/过滤
- 针对当前过滤条件的实时 **数据集摘要**(事件、国家、死亡人数、受伤人数)
- 底层 GTD 记录的 **已过滤、可滚动数据表**(事件 ID、日期、地点、坐标、事件摘要等)
### 9. ⚙️ 设置 (`9_Setting.py`)
仪表板级别的配置/偏好设置页面。
## 🖥️ 关键视觉功能
- 🗺️ 用于即时空间感知的地理位置热力图
- 🎨 使用颜色编码指标的威胁等级可视化
- 📊 完全交互式的 Plotly 图表和报告 — 缩放、平移和悬停查看详情
- 💣 攻击类型分析,细分爆炸、武装袭击、设施/基础设施袭击等
## 🧠 机器学习 Pipeline
仪表板的预测核心是 **离线** 使用 `train_attack_model.py` 训练的,并在运行时由 **攻击预测** 页面调用。
**使用的特征:**
`country_txt`, `region_txt`, `weaptype1_txt`, `targtype1_txt`, `gname`, `success`, `suicide`, `nkill`, `nwound`
**目标:** `attacktype1_txt` (预测的攻击类型)
**Pipeline 步骤:**
1. 加载 `data/globalterrorism.csv`
2. 选择相关列并删除含有缺失值的行
3. 分别对所有类别型特征和目标进行 Label-encode
4. 训练/测试集划分 (80/20)
5. 训练 `RandomForestClassifier` (`n_estimators=300`, `random_state=42`)
6. 使用准确率、分类报告和混淆矩阵进行评估
7. 使用 `joblib` 将模型和编码器持久化到 `models/` 目录:
- `attack_prediction_model.pkl`
- `target_encoder.pkl`
- `feature_encoders.pkl`
## 📁 项目结构
```
MILITARY - INTELLIGENCE/
├── data/
│ └── globalterrorism.csv # Raw GTD dataset
├── models/
│ ├── attack_prediction_model.pkl # Trained Random Forest model
│ ├── feature_encoders.pkl # LabelEncoders for input features
│ └── target_encoder.pkl # LabelEncoder for the target (attack type)
├── pages/
│ ├── 1_Home.py
│ ├── 2_Global_Threat_Map.py
│ ├── 3_Country_Analysis.py
│ ├── 4_Attack_Prediction.py
│ ├── 5_Threat_Level.py
│ ├── 6_Forecasting.py
│ ├── 7_AI_Intelligence.py
│ ├── 8_Data_Explorer.py
│ └── 9_Setting.py
├── utils/
│ └── data_loader.py # Centralised data loading/caching logic
├── app.py # Main Streamlit entry point
└── train_attack_model.py # Offline model training script
```
## ⚙️ 安装与设置
**前置条件:** Python 3.9+ 和 pip
```
# 1. Clone repository
git clone
cd BSERC-PRJCT
# 2. 创建并激活 virtual environment(推荐)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. 安装 dependencies
pip install streamlit pandas numpy scikit-learn joblib plotly
# 4. (可选)如果 dataset 已更新,重新训练 ML model
python train_attack_model.py
# 5. 启动 dashboard
streamlit run app.py
```
应用程序将在您的浏览器中通过 `http://localhost:8501` 打开。使用左侧边栏在各个模块之间进行导航。
## 📊 数据集
该仪表板由 **Global Terrorism Database (GTD)** 驱动,这是一个由马里兰大学恐怖主义及应对恐怖主义研究全国联盟 (START) 维护的开源数据库。它记录了全球范围内恐怖袭击的事件级数据,包括日期、地点、武器类型、目标类型、肇事组织以及伤亡人数。
## 🚧 局限性
- 攻击类型的预测准确性取决于数据的完整性;在训练期间会删除关键字段中包含缺失值的行。
- `gname` (肇事组织) 是一个高基数的类别型字段,在推理时如果不进行重新训练,就无法对未见过的组织进行编码。
- 预测纯粹基于历史趋势外推,并未考虑实时的地缘政治事件。
## 🔮 未来增强功能
- 基于真实 LLM 的 AI 情报报告生成(目前为基于规则的摘要)
- 可解释 AI (SHAP/特征重要性) 以提高预测透明度
- 肇事者网络图分析
- 各地区的异常/激增检测警报
- 用户身份验证和基于角色的访问
- PDF/Excel 报告导出
## 📚 参考
本项目的构建和设计得到了以下开源数据集、平台和技术文档的帮助:
- **Kaggle 上的 Global Terrorism Database (GTD)** — 作为主要数据集,包含全球恐怖主义袭击的历史记录,用于训练机器学习模型并在地图上绘制威胁位置。
链接: https://www.kaggle.com/datasets/START-UMD/gtd
- **NASA Open Data** — 用于参考理解地理空间测绘和地球观测数据的基本概念。
链接: https://data.nasa.gov/
- **Python 官方文档** — 作为核心编程逻辑、数据清洗和构建机器学习模型的指南。
链接: https://docs.python.org/3/
- **Streamlit 文档** — 用于学习如何构建用户界面、创建侧边栏以及将 Python 代码连接到基于 Web 的仪表板。
链接: https://docs.streamlit.io/
## 📄 许可证
本项目作为实习/项目提交的一部分,仅用于学术/研究目的。
## 👤 作者
Vivek Kumar
标签:Apex, Kubernetes, Python, Streamlit, 军事情报, 威胁分析, 无后门, 机器学习, 自动化侦查工具, 访问控制, 逆向工具