Jad-Al-Karim/car-attack-detection

GitHub: Jad-Al-Karim/car-attack-detection

面向车载CAN总线网络的机器学习入侵检测系统,系统性地对比了10种ML模型在DoS、模糊攻击等场景下的检测效果

Stars: 0 | Forks: 0

# 汽车攻击检测模型 该项目实现了用于检测汽车系统各类攻击的机器学习模型,使用的多种数据集包括 DoS、Fuzzy、Gear 和 RPM 数据。 ## 项目结构 ``` ├── Cleaning the datasets.ipynb # Data preprocessing notebook ├── Cars Attack detection Models.ipynb # Original 4 ML models notebook ├── more models for detection.ipynb # Extended 10 ML models notebook ├── DoS_dataset.csv # Denial of Service attack data ├── Fuzzy_dataset.csv # Fuzzy attack data ├── gear_dataset.csv # Gear-related data ├── RPM_dataset.csv # RPM sensor data ├── normal_run_data.txt # Normal operation data ├── requirements.txt # Python dependencies └── car_attack_detection_env/ # Virtual environment ``` ## 设置说明 ### 1. 克隆仓库 ``` git clone cd car-attack-detection ``` ### 2. 创建并激活虚拟环境 ``` # 创建 virtual environment python -m venv car_attack_detection_env # 在 Windows 上激活 .\car_attack_detection_env\Scripts\Activate.ps1 # 在 Linux/Mac 上激活 source car_attack_detection_env/bin/activate ``` ### 3. 安装依赖 ``` pip install -r requirements.txt ``` ### 4. 启动 Jupyter Notebook ``` jupyter notebook ``` ## 已实现的模型 ### 原始模型 (`Cars Attack detection Models.ipynb`) | # | 模型 | 类型 | |---|-------|------| | 1 | **AdaBoost** | 集成方法 (使用 GridSearchCV 调优) | | 2 | **Naive Bayes (NBC)** | 概率分类器 | | 3 | **Decision Tree (CDT)** | 树分类器 | | 4 | **XGBoost** | 梯度提升 | ### 扩展模型 (`more models for detection.ipynb`) 包含上述所有 4 个原始模型,**外加** 6 个新模型: | # | 模型 | 类型 | |---|-------|------| | 5 | **SVM (RBF)** | 使用 RBF 核的 Support Vector Machine | | 6 | **Random Forest** | 决策树集成 | | 7 | **Logistic Regression** | 线性分类器 | | 8 | **KNN** | K-Nearest Neighbors (基于距离) | | 9 | **Neural Network (MLP)** | Multi-Layer Perceptron (128→64 隐藏层) | | 10 | **Extra Trees** | 极端随机树 | ### 结果摘要 | 排名 | 模型 | 准确率 | 训练时间 | |------|-------|----------|---------------| | 🥇 | Extra Trees | 100.00% | 6.75s | | 🥈 | XGBoost | 100.00% | 7.33s | | 🥉 | Random Forest | 100.00% | 9.34s | | #4 | AdaBoost | 100.00% | 103.34s | | #5 | SVM (RBF) | 99.99% | 30.83s | | #6 | Neural Network (MLP) | 99.99% | 65.10s | | #7 | KNN | 99.98% | 2.17s | | #8 | Decision Tree | 99.94% | 1.23s | | #9 | Naive Bayes | 99.03% | 0.16s | | #10 | Logistic Regression | 98.34% | 4.06s | ## 📥 数据集 数据集文件 `final_train_ready_scrubbed.csv` 由于体积较大(~55MB),**未包含**在本仓库中。 **要运行 notebooks:** 1. 从 [Kaggle](https://www.kaggle.com/) 或您的原始来源下载 **Car Hacking Dataset** 2. 运行 `Cleaning the datasets.ipynb` 生成清洗后的数据集,或者将预处理好的 `final_train_ready_scrubbed.csv` 放在项目根目录下 3. 然后按顺序运行模型 notebooks ## 数据集说明 - **DoS Dataset**:包含拒绝服务 攻击模式 - **Fuzzy Dataset**:模糊逻辑攻击数据 - **Gear Dataset**:档位操纵攻击数据 - **RPM Dataset**:基于发动机转速 (RPM) 的攻击数据 - **Normal Run Data**:基线正常运行数据 ## 关键特性 - **数据预处理**:全面的数据清洗和特征工程 - **10 种 ML 模型**:跨越多种算法家族的综合比较 - **超参数调优**:对 AdaBoost 使用 5 折交叉验证 (5-fold CV) 的 GridSearchCV - **特征缩放**:对需要的模型(SVM、KNN、MLP、Logistic Regression)应用 StandardScaler - **可视化**:混淆矩阵、准确率条形图、F1-score 比较、精确率与召回率图 - **交叉验证**:用于可靠模型评估的 5 折 CV - **过拟合检测**:训练集与测试集准确率差异分析 - **按类分析**:展示每个模型对每种攻击类型准确率的热力图 ## 使用方法 1. 从 `Cleaning the datasets.ipynb` 开始预处理您的数据 2. 运行 `Cars Attack detection Models.ipynb` 进行原始的 4 模型比较 3. 运行 `more models for detection.ipynb` 进行完整的 10 模型比较(包含所有原始模型 + 6 个新模型) ## 结果 该项目提供: - 按准确率和速度排序的 10 个模型完整排名 - 每个模型的混淆矩阵 - 训练与测试性能分析 - 所有模型的过拟合检测 - 跨所有模型和攻击类型的按类准确率热力图 - 可视化比较图表(准确率、F1-score、训练时间、精确率与召回率) ## 环境要求 - Python 3.8+ - 完整软件包列表请参见 `requirements.txt` ## 贡献指南 1. Fork 本仓库 2. 创建一个特性分支 3. 提交您的更改 4. 推送到该分支 5. 创建一个 Pull Request ## 许可证 该项目基于 MIT 许可证授权 - 详情请参阅 LICENSE 文件。
标签:AdaBoost, Apex, CAN Bus, CAN总线, DoS攻击检测, Fuzzy攻击, NoSQL, Python, Scikit-learn, XGBoost, 入侵检测系统, 决策树, 安全数据湖, 异常检测, 支持向量机, 数据科学, 无后门, 朴素贝叶斯, 机器学习, 汽车电子, 汽车黑客, 深度学习, 资源验证, 车联网安全, 车载网络安全, 逆向工具