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, 二分类, 交互式仪表板, 交叉验证, 分类任务, 合成数据, 学校项目, 批量预测, 支持向量机, 教学案例, 数据科学, 数据集生成, 无后门, 机器学习, 模型持久化, 模型训练, 模型评估, 混淆矩阵, 特征重要性, 网络安全, 访问控制, 资源验证, 逆向工具, 随机森林, 隐私保护