Priyem-hub/cia-dashboard
GitHub: Priyem-hub/cia-dashboard
基于 Streamlit 和机器学习的全球冲突情报可视化仪表盘,提供交互式3D地图、威胁评分和场景模拟功能。
Stars: 0 | Forks: 0
# 🛰 全球冲突情报仪表盘
## 概述
**全球冲突情报仪表盘 (GCID)** 是一个基于 Streamlit、PyDeck 和 Plotly 构建的全栈 Python 数据应用。它摄取地缘政治冲突数据集,并为分析师提供:
| 功能 | 描述 |
|---------|-------------|
| 🌍 **交互式 3D 地球** | 带有发光红色热点标记和悬停工具提示的 PyDeck ScatterplotLayer |
| ⚠️ **威胁排名表** | 所有索引国家按风险分数排名,配有可视化风险条和徽章 |
| 📊 **分析套件** | 分布直方图、区域平均值、散点相关性、树状图、特征重要性环形图 |
| 🤖 **场景模拟器** | 调整 4 个地缘政治滑块 → ML 模型返回风险分数、等级、置信区间和各因素贡献度 |
| 🔬 **敏感性分析** | 实时图表显示每个参数如何独立驱动风险 |
**美学风格**:深色情报控制台主题,采用 Orbitron / Share Tech Mono 字体,发光的红色威胁标记和扫描线覆盖层。
## 项目结构
```
global-conflict-intelligence/
│
├── app.py ← Streamlit dashboard (UI, maps, charts, simulator)
├── conflict_model.py ← ML model (GradientBoostingRegressor + scikit-learn)
├── dataset.csv ← 40-row geopolitical dataset
├── requirements.txt ← Python dependencies
└── README.md ← This file
```
## 安装
### 前置条件
- Python 3.10 或更高版本
- pip
### 步骤
```
# 克隆 / 下载项目文件夹
cd global-conflict-intelligence
# (推荐) 创建 virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
```
## 运行应用
```
streamlit run app.py
```
仪表盘将自动在 **http://localhost:8501** 打开
## 机器学习模型
`conflict_model.py` 实现了一个 `ConflictRiskModel` 类,该类由 `Pipeline`(包含 `StandardScaler`)中的 scikit-learn `GradientBoostingRegressor` 提供支持。
### 输入特征
| 特征 | 范围 | 影响 |
|---------|-------|--------|
| `military_spending` | 0–25 % GDP | 越高 → 风险越大 |
| `sanctions` | 0–10 index | 越高 → 风险越大 |
| `trade_dependency` | 0–10 index | 越高 → 风险**越低** |
| `diplomatic_stability` | 0–10 index | 越高 → 风险**越低** |
### 训练
该模型在 40 行的 CSV 数据以及基于领域编码规则生成的 **600 个合成样本**上进行训练。这可以防止在小型真实数据集上过拟合,同时编码地缘政治逻辑。
### API
```
from conflict_model import get_model
model = get_model() # lazy-init singleton
result = model.predict(
military_spending=8.5,
sanctions=9.0,
trade_dependency=2.0,
diplomatic_stability=1.5,
)
# result = {
# "risk_score": 91.3,
# "risk_level": "CRITICAL",
# "risk_level_color": "#FF0000",
# "confidence_band": (87.1, 95.5),
# "contributing_factors": {...}
# }
```
## 部署到 Streamlit Cloud
1. **推送到 GitHub**
git init
git add .
git commit -m "Initial commit – GCID"
git remote add origin https://github.com//global-conflict-intelligence.git
git push -u origin main
2. 在 [share.streamlit.io](https://share.streamlit.io) **登录**
3. **新建应用** → 连接你的 GitHub 仓库 → 设置:
- **主文件路径**: `app.py`
- **Python 版本**: 3.11
4. 点击 **Deploy** — Streamlit Cloud 会自动安装 `requirements.txt`。
5. (可选)如果你接入真实的 Mapbox token,请通过 Streamlit Cloud 仪表盘添加 `secrets.toml`:
MAPBOX_TOKEN = "pk.eyJ1IjoiL..."
然后在 `app.py` 中将其传递给 `pdk.Deck(mapbox_key=st.secrets["MAPBOX_TOKEN"])`。
## 自定义
| 内容 | 位置 |
|------|-------|
| 添加国家 / 更新分数 | `dataset.csv` |
| 调整 ML 超参数 | `conflict_model.py` → `GradientBoostingRegressor(...)` |
| 更改配色方案 | `app.py` → `GLOBAL CSS` 代码块 |
| 添加新的分析图表 | `app.py` → TAB 3 部分 |
| 切换地图样式 | `app.py` → `pdk.Deck` 中的 `map_style=` 参数 |
## 数据免责声明
`dataset.csv` 中的所有数据均为**合成/说明性**数据,仅用于演示目的。风险分数不代表真实的情报评估。本项目**不适用于实际操作用途**。
## 技术栈
| 库 | 版本 | 用途 |
|---------|---------|---------|
| `streamlit` | ≥1.35 | Web 框架 + UI |
| `pydeck` | ≥0.9 | WebGL 地理空间地图 |
| `plotly` | ≥5.22 | 交互式图表 |
| `pandas` | ≥2.2 | 数据处理 |
| `numpy` | ≥1.26 | 数值运算 |
| `scikit-learn` | ≥1.4 | ML 模型 |
*全球冲突情报仪表盘 — 演示项目*
标签:3D地图, Apex, GIS, Kubernetes, Plotly, PyDeck, Python, Scikit-learn, Streamlit, 全栈应用, 冲突分析, 地缘政治, 场景模拟, 威胁情报, 开发者工具, 情报仪表盘, 数据大屏, 无后门, 机器学习, 灵敏度分析, 热力图, 访问控制, 逆向工具