信息内容安全-朴素贝叶斯邮件过滤(多项式模型)实验

这篇博客探讨了信息内容安全中的一项应用——使用朴素贝叶斯算法进行邮件过滤。通过多项式模型进行实验,文章包含实际的Python代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

信息内容安全-朴素贝叶斯邮件过滤(多项式模型)实验

代码

# 信息内容安全作业-朴素贝叶斯邮件过滤(多项式模型)

import os
import jieba
import random

from collections import Counter
import numpy as np
from sklearn.naive_bayes import MultinomialNB, GaussianNB, BernoulliNB
from sklearn.svm import SVC, NuSVC, LinearSVC
from sklearn.metrics import confusion_matrix


# 提取 50 封邮件并标注好类型(正常邮件为1)
def get_email():
    global email_list
    global email_num

    # 提取正常邮件,并标注类型为1
    for root, dirs, files in os.walk(ham_path):
        for fn in files:
            email_list.append([fn,1])
            email_num += 1

    # 提取垃圾邮件,并标注类型为0
    for root, dirs, files in os.walk(spam_path):
        for fn in files:
            email_list.append([fn,0])
            email_num += 1


# 从 spam 和 pam 集中随机取 10 封邮件作为测试集,剩下 40 封作为训练集
# (并标注类型、记录各类型邮件数量)
def get_training_set(email_list):
    global training_set
    global test_set
    global ham_training_num
    global spam_training_num
    global email_training_num
    training_set = email_list[:]
    email_training_num = email_num

    for i in range(10):
        s = int( random.uniform(0, len(training_set)) )
        if training_set[s][1] == 1:
            ham_training_num -= 1
        else:
            spam_training_num -= 1
        email_training_num -= 1
        test_set.append(training_set[s])
        del (training_set[s])

    print("测试集:")
    print(test_set)


# 计算先验概率 P(y)
def get_priori_possibility():
    global py1
    global py2

    py1 = round( (ham_training_num + a) / (email_training_num + 2 * a), 2)
    py2 = round( (spam_training_num + a) / (email_training_num + 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值