一个基于机器学习的敏感信息检测项目,采用面向对象编程(OOP)设计,集成了现代化的打包和部署解决方案。
- 🔍 智能检测: 使用多种机器学习算法检测敏感信息
- 🏗️ 模块化设计: 面向对象架构,易于维护和扩展
- 📦 一键打包: 支持跨平台(Windows/Linux/macOS)可执行文件打包
- 📊 完整日志: 使用loguru提供详细的日志记录
- 🔄 数据生成: 内置多种敏感数据生成器
- 🎯 生产就绪: 支持训练、预测、部署的完整流程
- 📈 模型比较: 支持多种算法性能比较和超参数优化
hello-scikit-learn/
│
├── src/ # 核心源代码目录
│ ├── __init__.py
│ ├── trainer.py # 模型训练器(增强版)
│ ├── predictor.py # 模型预测器(增强版)
│ ├── generate_sensitive_data/ # 数据生成模块
│ │ ├── __init__.py
│ │ ├── sensitive_data_generator.py
│ │ ├── password_style.py
│ │ ├── normal_text_generator.py
│ │ └── normal_code_generator.py
│ └── package/ # 打包系统模块
│ ├── __init__.py
│ ├── package_config.py
│ ├── builder.py
│ ├── platform_builders.py
│ └── package_manager.py
│
├── models/ # 模型存储目录
├── data/ # 训练数据目录
├── logs/ # 日志文件目录
├── build/ # 构建中间文件(包含spec文件)
├── dist/ # 打包输出目录
├── packages/ # 发布包目录
│
├── generate_data.py # 数据生成入口
├── train_model.py # 模型训练入口(增强版)
├── predict.py # 模型预测入口(增强版)
├── compare_models.py # 模型比较脚本
│
├── build.py # 一键式打包入口
├── build.bat # Windows打包脚本
├── build.sh # Linux/macOS打包脚本
│
├── config.py # 项目配置文件(增强版)
├── requirements.txt # Python依赖列表
├── pyproject.toml # 项目元数据
└── README.md # 项目说明文档
系统要求:
- Python 3.10+
- 内存: 4GB+
- 硬盘空间: 2GB+
安装依赖:
pip install -r requirements.txt
生成训练数据:
python generate_data.py
训练敏感信息检测模型:
# 使用默认的朴素贝叶斯算法
python train_model.py
# 使用逻辑回归算法
python train_model.py --model logistic_regression
# 使用SVM算法
python train_model.py --model svm
# 使用随机森林算法
python train_model.py --model random_forest
# 启用超参数优化
python train_model.py --model logistic_regression --optimize
比较不同模型的性能:
python compare_models.py
执行预测测试:
# 基本预测
python predict.py
# 自定义文本预测
python predict.py --texts "我的密码是abc123" "今天天气很好" "身份证号123456789012345678"
# 使用指定模型路径
python predict.py --model-path models/sensitive_classifier_latest.pkl
组件 | 文件 | 说明 |
---|---|---|
数据生成器 | src/generate_sensitive_data/ |
生成多种类型的敏感/非敏感数据 |
模型训练器 | src/trainer.py |
负责数据加载、模型训练和评估(支持多种算法) |
模型预测器 | src/predictor.py |
负责加载模型并执行预测(增强功能) |
模型比较器 | compare_models.py |
比较不同模型的性能 |
打包系统 | src/package/ |
跨平台打包和部署管理 |
- 数据生成: 使用内置生成器创建训练数据
- 特征提取: TF-IDF向量化(增强版,支持ngram_range=(1,3),更多特征)
- 模型训练: 支持多种分类器(朴素贝叶斯、逻辑回归、SVM、随机森林)
- 超参数优化: 网格搜索优化模型参数
- 模型评估: 准确率、精准率、召回率、F1分数、交叉验证等指标
- 模型保存: 支持版本管理和历史备份
模型类型 | 参数值 | 特点 |
---|---|---|
朴素贝叶斯 | naive_bayes |
训练速度快,适合小数据集 |
逻辑回归 | logistic_regression |
线性模型,可解释性强 |
支持向量机 | svm |
非线性分类,性能优秀 |
随机森林 | random_forest |
集成学习,抗过拟合 |
项目集成了先进的跨平台打包系统,支持将Python项目打包为可独立运行的可执行文件。
# 一键打包当前平台
build.bat
# 跨平台打包
build.bat cross
# 清理spec文件
build.bat cleanspec
# 显示帮助
build.bat help
# 设置执行权限(仅首次)
chmod +x build.sh
# 一键打包当前平台
./build.sh
# 跨平台打包
./build.sh cross
# 清理spec文件
./build.sh cleanspec
# 显示帮助
./build.sh help
# 构建当前平台
python build.py
# 跨平台构建
python build.py cross
# 显示模块信息
python build.py info
# 清理旧包
python build.py clean
# 清理spec文件
python build.py cleanspec
# 列出已构建包
python build.py list
# 显示帮助
python build.py help
build/ # 构建中间文件
├── generate_data.spec # PyInstaller配置文件
├── train_model.spec
├── predict.spec
└── 子目录/ # 构建中间文件
dist/
├── windows-x86_64/ # Windows平台构建结果
│ ├── generate_data.exe
│ ├── train_model.exe
│ ├── predict.exe
│ ├── compare_models.exe
│ ├── config.py
│ ├── README.md
│ ├── requirements.txt
│ ├── data/ # 数据目录
│ ├── models/ # 模型目录
│ └── logs/ # 日志目录
└── linux-x86_64/ # Linux平台构建结果
└── ...
packages/ # 发布包目录
└── hello-scikit-learn-0.1.0-windows-x86_64.zip
- ✅ 单文件模式: 每个脚本打包为一个独立的可执行文件
- ✅ 无依赖运行: 打包后的文件可在没有Python环境的机器上运行
- ✅ 智能配置: 自动包含所有必要的模块和数据文件
- ✅ 跨平台支持: 支持Windows、Linux、macOS三大平台
- ✅ 版本管理: 自动管理不同版本的构建产物
- ✅ 清理功能: 支持清理旧的spec文件和构建产物
-
运行数据生成:
# Windows generate_data.exe # Linux/macOS ./generate_data
-
运行模型训练:
# Windows train_model.exe # Linux/macOS ./train_model # 使用特定模型类型 train_model.exe --model logistic_regression --optimize
-
运行模型比较:
# Windows compare_models.exe # Linux/macOS ./compare_models
-
运行预测:
# Windows predict.exe # Linux/macOS ./predict # 自定义文本预测 predict.exe --texts "我的密码是abc123" "今天天气很好"
项目使用loguru
库提供完整的日志记录功能:
- 分级记录: INFO、WARNING、ERROR、SUCCESS等级别
- 文件轮转: 每日自动创建新的日志文件
- 控制台输出: 实时显示关键信息
- 结构化格式: 时间戳、级别、模块名等
logs/
├── train_log_2025-09-29.log # 训练日志
├── predict_log_2025-09-29.log # 预测日志
├── model_comparison_2025-09-29.log # 模型比较日志
├── build_windows_x86_64_2025-09-29.log # 构建日志
└── package_manager_2025-09-29.log # 包管理日志
项目使用集中式配置管理,主要配置位于config.py
:
# 数据路径配置
GENERATE_DATA_PATH = "data/sensitive_data.xlsx"
TRAIN_DATA_PATH = "data/train_data.xlsx"
# 模型配置
MODEL_SAVE_PATH = "models/"
LATEST_MODEL_PATH = "models/latest_model.pkl"
# 日志配置
LOG_LEVEL = "INFO"
LOG_ROTATION = "1 day"
项目内置多种数据生成器:
生成器 | 类型 | 说明 |
---|---|---|
CommonWeakPassword |
弱密码 | 常见的弱密码数据 |
HuaweiStylePassword |
华为风格 | 模拟华为设备密码 |
TokenStylePassword |
Token风格 | API Token、访问密钥等 |
DjangoTokenStylePassword |
Django Token | Django框架的Token格式 |
NormalTextGenerator |
正常文本 | 非敏感的日常文本 |
NormalCodeGenerator |
代码段 | 正常的代码片段 |
基于默认训练数据的性能表现:
- 准确率: ~95-99%(取决于模型类型)
- 精准率: ~93-98%
- 召回率: ~94-99%
- F1分数: ~93.5-98.5%
注:实际性能取决于训练数据的质量和数量
-
模块导入错误
- 检查Python路径是否正确
- 确保所有依赖已正确安装
- 检查隐藏导入配置是否完整
-
构建失败
- 查看日志文件获取详细错误信息
- 检查是PyInstaller是否正确安装
- 确保有足够的内存和磁盘空间
-
数据加载问题
- 检查数据文件路径是否存在
- 验证数据格式是否正确
- 检查文件权限
logs/
├── build_windows_x86_64_YYYY-MM-DD.log # 构建日志
├── package_manager_YYYY-MM-DD.log # 包管理日志
├── train_log_YYYY-MM-DD.log # 训练日志
├── predict_log_YYYY-MM-DD.log # 预测日志
└── model_comparison_YYYY-MM-DD.log # 模型比较日志
在 src/package/package_config.py
中添加新的脚本文件名:
MAIN_SCRIPTS = [
"generate_data.py",
"train_model.py",
"predict.py",
"compare_models.py", # 添加新脚本
"your_new_script.py"
]
继承 BaseBuilder
类创建自定义构建器:
from src.package.builder import BaseBuilder
class CustomBuilder(BaseBuilder):
def build_single_executable(self, script_name):
# 自定义构建逻辑
return super().build_single_executable(script_name)
在 PackageManager
中添加新的包格式支持。
本项目采用 MIT 许可证,详情参见 LICENSE 文件。
欢迎提交 Issues 和 Pull Requests!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送分支 (
git push origin feature/AmazingFeature
) - 开启 Pull Request
- ✅ 增强模型训练器,支持多种机器学习算法
- ✅ 添加超参数优化功能
- ✅ 增强模型预测器,提供更多预测选项
- ✅ 添加模型比较脚本,支持算法性能对比
- ✅ 扩展特征工程,提升模型性能
- ✅ 增强命令行接口,支持更多参数选项
- ✅ 更新文档,添加新功能说明
- ✅ 初始版本发布
- ✅ 实现敏感信息检测基础功能
- ✅ 集成跨平台打包系统
- ✅ 添加完整的日志系统
- ✅ 内置多种数据生成器
- ✅ 支持一键式构建和部署
- ✅ Spec文件统一管理
- ✅ 包版本管理和清理功能
⭐ 如果这个项目对你有帮助,请给一个 Star! ⭐