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, 全栈应用, 冲突分析, 地缘政治, 场景模拟, 威胁情报, 开发者工具, 情报仪表盘, 数据大屏, 无后门, 机器学习, 灵敏度分析, 热力图, 访问控制, 逆向工具