panicAtTheCompile/Risk-Aware-ST-DBSCAN

GitHub: panicAtTheCompile/Risk-Aware-ST-DBSCAN

该项目是一个基于增强 ST-DBSCAN 算法的可扩展时空聚类框架,旨在从大规模城市交通事故数据中高效检测并可视化时空热点。

Stars: 0 | Forks: 0

![Python](https://img.shields.io/badge/Python-3.11-blue) ![License](https://img.shields.io/badge/License-MIT-green) ![Status](https://img.shields.io/badge/Status-Completed-success) ![Made With](https://img.shields.io/badge/Made%20with-Pandas%20%7C%20Plotly%20%7C%20Scikit--learn-orange) # 风险感知 ST-DBSCAN

## 概述 城市交通事故数据集本质上具有噪声大、维度高和不断演变的特征,这使得使用传统的基于密度的聚类技术进行可靠的热点检测在计算上充满挑战。 本项目提出了一种可扩展的工程化实现,即**时空 DBSCAN (ST-DBSCAN)**,用于大规模交通热点检测。它将高效的空间索引、自适应时间推理、风险感知聚类和交互式地理空间可视化结合到一个统一的分析 pipeline 中。 与仅关注空间分组的传统聚类实现不同,该框架整合了预处理、特征工程、热点聚合和可视化,为交通规划和基础设施风险评估提供可解释的洞察。 # 项目亮点 * 🚦 处理了 **51,410** 条真实世界的交通事故记录 * 📍 生成了 **373** 个交通热点中心 * 🌍 混合 **BallTree + cKDTree** 空间索引 * ⚡ 增强的 **ST-DBSCAN** 聚类工作流 * 📊 交互式 **3D 时空立方体** * 🎥 4D 动画热点演变 * 🛰️ 环境热点解读 * 📈 端到端可复现的地理空间分析 pipeline # 项目统计

# 系统架构 该框架遵循模块化的 pipeline,从原始交通事故数据开始,逐步将其转化为可解释的热点分析结果。 该架构将预处理、索引、聚类、热点生成和可视化分离为独立的工程组件,使得每个阶段都可以独立复现和扩展。

# 问题描述 城市交通事故表现出强烈的**空间**、**时间**和**环境**依赖性。 传统的基于密度的聚类算法通常显得不足,因为它们: * 忽略了时间演变, * 在大型数据集上执行昂贵的邻域搜索, * 对 GPS 噪声敏感, * 为城市规划者提供的可解释性有限。 这项工作的目标是构建一个可扩展的交通热点检测框架,能够高效识别有意义的事故簇,同时为基础设施规划生成可解释的视觉分析。 # 工程挑战 在整个项目过程中,我们解决了若干实际的工程挑战。 ### 时间漂移 由于基础设施的发展、政策的变化和季节性影响,交通模式会跨多年演变。 我们选择了一个有界的时间窗口,以减少长期漂移并保持聚类的一致性。 ### GPS 噪声 真实的事故数据集经常包含不准确或重复的地理坐标。 空间验证在聚类前会移除异常的观测值。 ### 计算可扩展性 朴素的邻域搜索在大型地理空间数据集上扩展性很差。 该框架通过混合的 **BallTree** 和 **cKDTree** 索引加速了空间查询。 ### 可解释性 成千上万个聚类的事故点提供的实际价值有限。 系统生成了具有代表性的热点中心,用于总结适合交通分析的高风险区域。 # 方法论 整体方法论遵循从原始事故记录到可解释热点可视化的结构化工程工作流。

该方法论包含以下几个阶段: 1. 交通数据集获取 2. 数据清洗与预处理 3. 时间窗口选择 4. GPS 坐标验证 5. 特征工程 6. BallTree + cKDTree 空间索引 7. 增强的 ST-DBSCAN 聚类 8. 簇的形成 9. 热点中心生成 10. 环境热点分析 11. 交互式可视化 # 设计原则 该框架围绕四个核心工程原则进行开发。 ### 可扩展性 高效的空间索引支持处理大规模地理空间数据集。 ### 可复现性 所有的预处理、聚类和可视化步骤均遵循确定性的分析 pipeline。 ### 可解释性 视觉分析提供了超越原始聚类输出的、易于理解的洞察。 ### 模块化 每个处理阶段都是隔离的,允许进行独立实验和未来的算法改进。 # 交通热点检测 Pipeline 该框架遵循模块化的数据工程 pipeline,将原始交通事故记录转化为可解释的热点分析。 每个阶段的设计都保证了可复现性、可扩展性和独立的可扩展性。

该 pipeline 包括: * 原始交通事故数据摄取 * 数据预处理和清洗 * 特征工程 * 混合空间索引 * 增强的 ST-DBSCAN 聚类 * 热点中心生成 * 环境解释 * 交互式可视化 # 算法概述 与传统的 ST-DBSCAN 实现不同,该框架通过面向工程的优化扩展了聚类工作流,从而提高了可扩展性和可解释性。 拟定的 pipeline 引入了空间索引、自适应预处理、热点聚合和更丰富的视觉分析,同时保留了底层的时空聚类方法论。

# 框架对比 通过引入预处理、优化的邻域搜索、热点摘要和交互式分析,拟议的框架将传统的 ST-DBSCAN 扩展到了单纯的基于密度的聚类之外。

# 数据集 本项目使用了 **US Accidents Dataset**,这是交通分析领域最大的公开可用交通事故数据集之一。 ## 数据集摘要 | 属性 | 值 | | ------------------ | --------------------------------------------- | | 区域 | 迈阿密都会区 | | 处理的记录数 | **51,410** | | 时间跨度 | 连续的时间窗口 | | 主要特征 | 纬度、经度、时间戳 | | 附加特征 | 天气、严重程度、交叉口、交通信号 | | 目标输出 | 交通热点 | 该数据集提供了充足的空间和时间多样性,可以评估在真实城市交通条件下的聚类性能。 # 技术栈 ## 编程 * Python ## 数据处理 * Pandas * NumPy ## 空间分析 * BallTree * cKDTree * Haversine 距离 ## 机器学习 * 增强的 ST-DBSCAN ## 可视化 * Plotly * Folium * Matplotlib ## 开发 * Jupyter Notebook * Git * GitHub # 主要工程贡献 本项目专注于构建一个完整的地理空间分析框架,而不是孤立地实现聚类。 主要贡献包括: * 为大规模交通事故数据集设计了模块化的预处理 pipeline。 * 集成了 BallTree 和 cKDTree 以进行高效的空间邻域搜索。 * 应用时间过滤以减少事故分布中的长期漂移。 * 生成具有代表性的热点中心,用于基础设施层面的解释。 * 使用 Folium 和 Plotly 开发了交互式的地理空间可视化。 * 构建了适用于未来交通研究的可复现分析工作流。 # 仓库结构 ``` Risk-Aware-STDBSCAN │ ├── README.md ├── LICENSE ├── requirements.txt ├── .gitignore │ ├── notebooks/ │ └── STDBSCAN_Analysis.ipynb │ ├── src/ │ ├── preprocessing.py │ ├── clustering.py │ ├── spatial_index.py │ ├── visualization.py │ ├── evaluation.py │ └── utils.py │ ├── figures/ │ ├── project_banner.png │ ├── architecture.png │ ├── methodology.png │ ├── pipeline.png │ ├── algorithm.png │ ├── comparison.png │ ├── project_stats.png │ ├── hotspot_map.png │ ├── spacetime_cube.png │ └── animation.gif │ ├── docs/ │ ├── methodology.md │ ├── algorithm.md │ └── benchmark.md │ ├── data/ │ └── sample_dataset.csv │ └── demo/ └── demo.gif ``` # 仓库细分 | 目录 | 描述 | | -------------- | ---------------------------------------------------------------------------------------- | | **src/** | 预处理、聚类、索引、可视化和评估模块的核心实现 | | **notebooks/** | 包含完整端到端工作流的实验 notebook | | **figures/** | 架构图、方法论、pipeline、对比图、统计信息和可视化输出 | | **docs/** | 补充的技术文档和方法论笔记 | | **data/** | 用于复现的示例数据集 | | **demo/** | 聚类和热点演变的动画演示 | # 可视化输出 该框架生成了多个互补的可视化输出,用于解释聚类结果。 * 交互式的 Folium 热点地图 * 簇中心地图 * 3D 时空立方体 * 动画热点演变 * 对比聚类分析 * 面向基础设施的热点解释 具有代表性的输出可以在 **figures/** 目录中找到。 # 安装 克隆仓库。 ``` git clone https://github.com//Risk-Aware-STDBSCAN.git cd Risk-Aware-STDBSCAN ``` 安装依赖项。 ``` pip install -r requirements.txt ``` # 使用方法 运行 Jupyter notebook 以复现完整的交通热点检测工作流。 ``` jupyter notebook notebooks/STDBSCAN_Analysis.ipynb ``` 该 notebook 执行以下操作: * 数据加载 * 数据预处理 * 时间过滤 * GPS 验证 * 特征工程 * 空间索引 * ST-DBSCAN 聚类 * 热点中心生成 * 交互式可视化 # 示例输出 该框架在整个 pipeline 中产生了多个分析输出。 ## 空间热点检测 * 交通热点簇 * 簇中心位置 * 基于密度的事故区域 ## 交互式地图 * Folium 热点可视化 * 簇中心叠加层 * 基础设施环境信息 ## 时空分析 * 3D 时空立方体 * 动画热点演变 * 时间聚类模式 ## 工程洞察 * 高风险交通走廊 * 事故集中区域 * 空间基础设施分析 # 性能总结 | 指标 | 值 | | ------------------ | -------: | | 交通记录 | **51,410** | | 热点中心 | **373** | | 空间索引结构 | **2** | | 交互式可视化 | **4+** | | Pipeline 阶段 | **11** | # 未来改进 当前的实现为时空交通分析建立了一个可复现的框架。 未来的增强功能可能包括: * 基于深度学习的热点预测 * HDBSCAN 性能对比 * GPU 加速的邻域搜索 * 实时流式交通分析 * 图神经网络集成 * 感知路网的聚类 * 使用 Spark 进行分布式处理 * REST API 部署 * 交互式 Streamlit 仪表板 * Docker 容器化 # 项目目标 本项目旨在展示: * 地理空间数据工程 * 时空聚类 * 大规模数据预处理 * 高效的空间索引 * 交互式可视化 * 可复现的分析工作流 * 面向工程的机器学习 pipeline # 参考 1. Birant, D., & Kut, A. (2007). ST-DBSCAN: An algorithm for clustering spatial–temporal data. 2. US Accidents Dataset 3. Scikit-learn Documentation 4. SciPy Spatial Documentation 5. Plotly Documentation 6. Folium Documentation 7. Pandas Documentation # 致谢 本项目是作为对可扩展地理空间分析的探索而开发的,它将成熟的聚类技术与工程驱动的预处理、空间索引和可视化工作流相结合。 该实现建立在最初的 ST-DBSCAN 方法论之上,同时利用 Python 科学计算生态系统进行了可复现的实验。 # 作者 **Harshita Pulavarti** GitHub: **https://github.com/** LinkedIn: **https://linkedin.com/in/** ## 许可证 本项目基于 MIT 许可证发布。 有关更多详细信息,请参阅 **LICENSE** 文件。
标签:NoSQL, Python, ST-DBSCAN, 交通热点检测, 地理空间分析, 无后门, 时空聚类, 逆向工具