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 构建的电子邮件垃圾检测系统主页。

### ✅ 正常邮件预测
合法(非垃圾)邮件的预测结果,显示模型得分、规则得分和最终置信度得分。

### 🚨 垃圾邮件预测
垃圾邮件的预测结果,显示垃圾邮件标签以及模型得分、规则得分和最终置信度得分。

### 🌐 FastAPI Swagger 文档
由 FastAPI 生成的交互式 API 文档。

### 📩 API 预测响应
`/predict` endpoint 返回分类标签和置信度得分的示例。

## 功能
* 使用机器学习检测垃圾信息
* 使用 **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, 垃圾邮件检测, 文本分类, 机器学习, 访问控制, 逆向工具