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, 入侵检测系统, 决策树, 安全数据湖, 异常检测, 支持向量机, 数据科学, 无后门, 朴素贝叶斯, 机器学习, 汽车电子, 汽车黑客, 深度学习, 资源验证, 车联网安全, 车载网络安全, 逆向工具