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, 军事情报, 威胁分析, 无后门, 机器学习, 自动化侦查工具, 访问控制, 逆向工具