千家信息网

Python怎么实现垃圾邮件识别

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了Python怎么实现垃圾邮件识别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么实现垃圾邮件识别文章都会有所收获,下面我们一起来看看吧。开
千家信息网最后更新 2026年11月02日Python怎么实现垃圾邮件识别

这篇文章主要介绍了Python怎么实现垃圾邮件识别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么实现垃圾邮件识别文章都会有所收获,下面我们一起来看看吧。

开发工具

Python版本:3.6.4

相关模块:

scikit-learn模块;

jieba模块;

numpy模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

逐步实现

(1)划分数据集

网上用于垃圾邮件识别的数据集大多是英文邮件,所以为了表示诚意,我花了点时间找了一份中文邮件的数据集。数据集划分如下:

训练数据集:

7063封正常邮件(data/normal文件夹下);

7775封垃圾邮件(data/spam文件夹下)。

测试数据集:

共392封邮件(data/test文件夹下)。

(2)创建词典

数据集里的邮件内容一般是这样的:

首先,我们利用正则表达式过滤掉非中文字符,然后再用jieba分词库对语句进行分词,并清除一些停用词,最后再利用上述结果创建词典,词典格式为:

{"词1": 词1词频, "词2": 词2词频...}

这些内容的具体实现均在"utils.py"文件中体现,在主程序中(train.py)调用即可:

最终结果保存在"results.pkl"文件内。

大功告成了么?当然没有!!!

现在的词典里有52113个词,显然太多了,有些词只出现了一两次,后续特征提取的时候一直空占着一个维度显然是不明智的做法。因此,我们只保留词频最高的4000个词作为最终创建的词典:

最终结果保存在"wordsDict.pkl"文件内。

(3)特征提取

词典准备好之后,我们就可以把每封信的内容转换为词向量了,显然其维度为4000,每一维代表一个高频词在该封信中出现的频率,最后,我们将这些词向量合并为一个大的特征向量矩阵,其大小为:

(7063+7775)×4000

即前7063行为正常邮件的特征向量,其余为垃圾邮件的特征向量。

上述内容的具体实现仍然在"utils.py"文件中体现,在主程序中调用如下:

最终结果保存在"fvs_%d_%d.npy"文件内,其中第一个格式符代表正常邮件的数量,第二个格式符代表垃圾邮件的数量。

(4)训练分类器

我们使用scikit-learn机器学习库来训练分类器,模型选择朴素贝叶斯分类器和SVM(支持向量机):

(5)性能测试

利用测试数据集对模型进行测试:

结果如下:

可以发现两个模型的性能是差不多的(SVM略胜于朴素贝叶斯),但SVM更倾向于向垃圾邮件的判定。

关于"Python怎么实现垃圾邮件识别"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Python怎么实现垃圾邮件识别"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

邮件 垃圾 数据 文件 内容 向量 模块 词典 特征 结果 测试 代表 文件夹 格式 模型 知识 词频 分类 训练 朴素 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会 金融科技创新监管互联网金融 上海互联网科技有限公司 互联网金融 科技金融 互联网科技革命 互联网科技大会 安控科技rtu产品工业互联网 互联网科技博主是什么意思 互联网科技中介 互联网公司科技股 青海科技产业互联网发展 互联网金融科技名词解释 互联网科技圈年度人物 元气玛特互联网科技公司是外包吗 互联网与数字科技关系 神州科技互联网有限公司 西安有哪些互联网高科技企业 云南互联网科技学费 唐山双旺合互联网科技产业园 互联网的科技体现在哪里 互联网科技生活的内容 汉立互联网科技有限公司联系电话 天速互联网络科技有限公司 福建科技产业互联网发展 湖北码尼互联网科技有限公司电话 昊天互联网科技有限公司 智腾互联网科技有限公司 翼展科技 首家互联网医院 广州燕处互联网科技有限公司 科技互联网经济论坛
0