贝叶斯概率实现电子邮件垃圾过滤器

本文介绍了一种使用贝叶斯概率实现的电子邮件垃圾过滤器。实验基于中文邮件数据集,通过结巴分词处理文本,最终模型在测试集上的准确率达到了0.9541。灵敏度为95.98%,特异度为94.82%,约登指数为90.8%。
摘要由CSDN通过智能技术生成

一、数据集说明
使用参考项目中提供的中文邮件数据集和中文停用词表,其中spam文件夹中有7775封垃圾邮件,normal文件夹中有7063封正常邮件,test文件夹中有392封测试邮件,test文件夹中,文件名在1至200的为正常邮件,文件名7801~8000的为垃圾邮件。

二、具体实验开展说明:
(1)先理清思路,制作了一张思维导图
思维导图
(2)对于公式部分看了一遍,加深理解。
贝叶斯公式
顺便去翻《概率论与数理统计》复习了一下贝叶斯公式。
在这里插入图片描述
(3)下载了结巴分词工具

三、结果分析
根据实验中的测试集,模型识别垃圾邮件的准确率为0.9541。

将算法的测试结果用混淆矩阵表示如下:

实际类别 实际类别
垃圾邮件 正常邮件
预测类别 垃圾邮件 191 10
预测类别 正常邮件 8 183

灵敏度=真阳性/(真阳性+假阴性)=191/(191+8)=95.98%
特异度=真阴性/(真阴性+假阳性)=183/(183+10)=94.82%
约登指数=95.98%+94.82%-1=90.8%

四、源代码

#!/usr/bin/env python
# coding: utf-8

import os
import jieba
import re

"""获取中文停用词表"""
def get_stop_words(StopFile):
    stopList=[]
    for line in open(StopFile):
        stopList.append(line[:len(line)-1])
    return stopList

"""批量获取邮件内容"""                 
def get_content(filePath):
    filenames=os.listdir(filePath)
    content=[]
    for filename in filenames:
        for line in open(filePath+filename):
            content.append(line[:len(line)-1])
    return con
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值