NARASIMHA045/Email-Spam-Detection

GitHub: NARASIMHA045/Email-Spam-Detection

一个结合机器学习与规则引擎的电子邮件垃圾检测系统,提供Web界面和REST API两种调用方式。

Stars: 0 | Forks: 0

# 📧 电子邮件垃圾检测系统 ## 概述 **电子邮件垃圾检测系统**是一个机器学习项目,可将电子邮件分类为**Spam(垃圾邮件)**、**Suspicious(可疑邮件)**或**Not Spam(非垃圾邮件)**。该系统结合了 **Logistic Regression** 机器学习模型与**基于规则的引擎**,以提高检测准确性。 **Streamlit** Web 应用程序提供了交互式用户界面,而 **FastAPI** 后端则暴露了预测 API,以便与其他应用程序集成。 ## 截图 ### 🏠 主页 使用 Streamlit 构建的电子邮件垃圾检测系统主页。 ![主页](https://static.pigsec.cn/wp-content/uploads/repos/cas/ff/ff78087795b78b5537ef480e3069ddf64d459d0d6826a0d9b13e4e4e79dad60a.png) ### ✅ 正常邮件预测 合法(非垃圾)邮件的预测结果,显示模型得分、规则得分和最终置信度得分。 ![正常邮件预测](https://static.pigsec.cn/wp-content/uploads/repos/cas/96/96708fb82fe5e6fe6662a77860d54b818db4c5ad98994b3e00b990f3e8a27f25.png) ### 🚨 垃圾邮件预测 垃圾邮件的预测结果,显示垃圾邮件标签以及模型得分、规则得分和最终置信度得分。 ![垃圾邮件预测](https://static.pigsec.cn/wp-content/uploads/repos/cas/bd/bdac4a63a76547895adbab6377ea0edfe18102952c7406904860365c9cd20b77.png) ### 🌐 FastAPI Swagger 文档 由 FastAPI 生成的交互式 API 文档。 ![FastAPI Swagger UI](https://static.pigsec.cn/wp-content/uploads/repos/cas/c2/c212f87c0c48221f351e1f31976ac499032ef8a8e6be5a9263c0d86020fff698.png) ### 📩 API 预测响应 `/predict` endpoint 返回分类标签和置信度得分的示例。 ![API 预测响应](https://static.pigsec.cn/wp-content/uploads/repos/cas/05/05380c7a18b79dfd1ad02133bc592b0915fdaa52dce26fdc615f7cab9c3bc6ce.png) ## 功能 * 使用机器学习检测垃圾信息 * 使用 **TF-IDF Vectorization** 进行文本特征提取 * 使用 **Logistic Regression** 进行训练 * 结合机器学习预测与基于规则评分的混合方法 * 将邮件分类为: * Spam(垃圾邮件) * Suspicious(可疑邮件) * Not Spam(非垃圾邮件) * 交互式 Streamlit Web 界面 * FastAPI REST API * 显示: * 模型得分 * 规则得分 * 最终置信度得分 * 评估指标: * Accuracy(准确率) * Precision(精确率) * Recall(召回率) * F1-Score * 混淆矩阵(Confusion Matrix) * 分类报告(Classification Report) ## 使用的技术 * Python * Scikit-learn * Pandas * 正则表达式(re) * Joblib * Streamlit * FastAPI * Uvicorn ## 机器学习流水线 1. 加载数据集 2. 清理文本 3. 将文本转换为 TF-IDF 向量 4. 将数据集拆分为训练集和测试集 5. 训练 Logistic Regression 模型 6. 评估模型 7. 保存训练好的模型和向量化器 8. 预测新消息 9. 应用额外的基于规则的评分 10. 生成最终预测 ## 基于规则的检测 如果消息包含以下内容,规则引擎将提高其垃圾邮件得分: * 垃圾关键词 * 多个链接 * 过多的数字 最终预测基于机器学习概率和规则引擎得分的组合结果。 ## 项目结构 ``` Email-Spam-Detection/ │ ├── app.py # Streamlit frontend ├── api.py # FastAPI backend ├── main.py # Model training script ├── rule_engine.py # Rule-based scoring ├── spam.csv # Dataset ├── model.pkl # Trained model ├── vectorizer.pkl # TF-IDF vectorizer ├── requirements.txt └── README.md ``` ## 安装说明 克隆代码库 ``` git clone https://github.com/your-username/Email-Spam-Detection.git ``` 进入项目文件夹 ``` cd Email-Spam-Detection ``` 安装依赖项 ``` pip install -r requirements.txt ``` ## 运行项目 ### 训练模型 ``` python main.py ``` ### 运行 Streamlit 应用程序 ``` streamlit run app.py ``` ### 运行 FastAPI 服务器 ``` uvicorn api:app --reload ``` 打开: ``` http://127.0.0.1:8000/docs ``` 以测试 API。 ## API 端点 ### POST `/predict` **输入** ``` message="Congratulations! You have won $1000." ``` **响应示例** ``` { "label": "spam", "confidence": 0.94 } ``` ## 模型评估 模型使用以下指标进行评估: * Accuracy * Precision * Recall * F1-Score * 混淆矩阵(Confusion Matrix) * 分类报告(Classification Report) 这些指标对分类器的性能提供了全面的评估。 ## 未来改进 * 比较多种机器学习算法 * 通过上传 CSV 进行批量邮件预测 * 可解释 AI(高亮显示垃圾关键词) * 邮件主题 + 正文分类 * 预测历史记录 * 带有数据分析的仪表板 * Docker 支持 * 云部署 * 用户身份验证 ## 作者 **Swamy** 计算机科学(AI 与 ML)专业二年级学生 对机器学习、人工智能、数据科学和软件开发充满热情。
标签:Apex, AV绕过, FastAPI, Kubernetes, Streamlit, 垃圾邮件检测, 文本分类, 机器学习, 访问控制, 逆向工具