nikhilagarwal03/Malware-Analysis-Using-ML
GitHub: nikhilagarwal03/Malware-Analysis-Using-ML
基于机器学习的恶意软件检测演示系统,提供从数据生成、模型训练到交互式预测的完整 Streamlit 工作流。
Stars: 0 | Forks: 0
# 恶意软件检测机器学习系统
一个经过精心打磨、交互式的 Streamlit 应用程序,用于使用机器学习进行恶意软件分类。
本项目演示了一个端到端的工作流程:
- 合成类恶意软件数据集的生成
- 模型训练与评估
- 交互式单样本和批量预测
- 性能指标的可视化
- 导出训练产物和预测输出
## 亮点
- 多种模型选项:
- Extra Trees Classifier
- Random Forest Classifier
- Support Vector Machine (SVM)
- 交互式评估仪表板:
- 准确率和 5 折交叉验证分数
- 混淆矩阵
- 带有 AUC 的 ROC 曲线
- 分类报告
- 特征重要性(基于树的模型)
- 预测工作流程:
- 来自测试集的单样本预测
- 批量 CSV 预测上传及可下载的结果
- 模型持久化:
- 使用 joblib 保存训练好的模型和缩放器
## 项目结构
- `malware_app.py` - 用于训练、评估和预测的主 Streamlit 应用
- `generate_dataset.py` - 生成合成恶意软件数据集的脚本
- `synthetic_malware_dataset.csv` - 应用使用的默认数据集
- `requirements.txt` - Python 依赖项
## 技术栈
- Python 3.9+
- Streamlit
- scikit-learn
- pandas / numpy
- plotly / seaborn / matplotlib
- joblib
## 快速开始
### 1. 克隆或打开项目
将所有文件放在一个工作目录中(在此工作空间中已完成)。
### 2. 创建并激活虚拟环境
Windows PowerShell:
```
python -m venv venv
.\venv\Scripts\Activate.ps1
```
### 3. 安装依赖项
```
pip install -r requirements.txt
```
### 4. (可选)重新生成数据集
```
python generate_dataset.py
```
这将创建或刷新 `synthetic_malware_dataset.csv`,其中包含:
- 1000 个样本
- 40 个特征
- 二元目标列:`class`(0 = 良性,1 = 恶意软件)
### 5. 运行 Streamlit 应用
```
streamlit run malware_app.py
```
打开终端中显示的本地 URL(通常是 `http://localhost:8501`)。
## 如何使用应用
### 侧边栏配置
- 选择算法:Extra Trees、Random Forest 或 SVM
- 调整测试集划分百分比
- 设置随机状态以确保可复现性
### 模型性能选项卡
查看:
- 数据集统计
- 模型准确率
- 交叉验证分数
- 混淆矩阵
- ROC 曲线 (AUC)
- 分类报告
- 特征重要性(仅限树模型)
### 预测选项卡
- 单次预测:从测试集中选择一个索引并运行预测
- 批量预测:上传包含匹配特征列的 CSV
批量输出包括:
- `Prediction` (0 或 1)
- `Malware_Probability` (0.0 到 1.0)
### 导出选项卡
保存:
- `trained_malware_model.pkl`
- `trained_malware_scaler.pkl`
## 批量预测的输入格式
您的 CSV 应包含训练期间使用的相同特征列:
- `feature_0` 到 `feature_39`
- 如果存在可选的 `class` 列,将被忽略
如果缺少列,应用会发出警告并阻止预测。
如果存在额外的列,它们将被忽略。
## 示例工作流程
1. 使用默认数据集启动应用。
2. 使用 Extra Trees 进行训练。
3. 检查混淆矩阵和 ROC 曲线。
4. 上传新的 CSV 进行批量预测。
5. 下载 `predicted_results.csv`。
6. 保存模型和缩放器产物。
## 注意事项和局限性
- 本项目使用合成数据用于演示目的。
- 不应将结果解释为生产级恶意软件检测性能。
- 对于现实世界的部署,请使用精心策划的安全数据集、稳健的验证和安全的 MLOps 流水线。
## 故障排除
- 未找到 Streamlit 命令:
- 使用 `python -m streamlit run malware_app.py`
- 缺少软件包:
- 重新运行 `pip install -r requirements.txt`
- 未找到数据集:
- 确保 `synthetic_malware_dataset.csv` 位于项目根目录中
## 未来改进
- 在 UI 中添加模型超参数控制
- 添加校准和阈值调整
- 集成可解释性工具(例如 SHAP)
- 添加合理的训练集/验证集/测试集划分管理
- 添加单元测试和 CI 流水线
## 许可证
本项目旨在用于教育和学术用途。
标签:Apex, AUC, Extra Trees, Joblib, Kubernetes, NumPy, Python, ROC曲线, scikit-learn, Streamlit, SVM, 二分类, 交互式仪表板, 交叉验证, 分类任务, 合成数据, 学校项目, 批量预测, 支持向量机, 教学案例, 数据科学, 数据集生成, 无后门, 机器学习, 模型持久化, 模型训练, 模型评估, 混淆矩阵, 特征重要性, 网络安全, 访问控制, 资源验证, 逆向工具, 随机森林, 隐私保护