网易首页 > 网易号 > 正文 申请入驻

使用机器学习算法完成垃圾邮件检测:Python实战

0
分享至

引言

随着互联网的发展,电子邮件已成为人们日常沟通的重要工具。然而,垃圾邮件的泛滥不仅浪费了用户的时间,还可能带来安全隐患,如恶意软件传播和网络钓鱼等。为了有效过滤垃圾邮件,本文将介绍如何使用机器学习算法,特别是朴素贝叶斯(Naive Bayes)算法,结合Python进行垃圾邮件检测。

原理 朴素贝叶斯算法

朴素贝叶斯算法是一种基于贝叶斯定理的简单概率分类器,它假设特征之间相互独立。在垃圾邮件检测中,特征通常是邮件中的单词或单词组合,目标变量是邮件是否为垃圾邮件(是/否)。算法通过计算邮件中每个单词在垃圾邮件和非垃圾邮件中出现的概率,来预测新邮件的类别。

数据预处理

在将邮件数据输入到机器学习模型之前,需要进行一系列预处理步骤,包括:

  1. 文本清洗:去除邮件中的HTML标签、特殊字符、停用词等。
  2. 分词:将邮件文本分割成单词或词组。
  3. 特征提取:将文本转换为数值型特征,常用TF-IDF(词频-逆文档频率)方法。
Python实战 环境搭建

确保安装了Python和必要的库,如pandas、numpy、scikit-learn等。可以使用pip命令安装:

bash复制代码

pip install pandas numpy scikit-learn nltk matplotlib seaborn

数据集

这里我们使用一个假设的数据集,包含邮件的文本内容和标签('ham'或'spam')。在实际应用中,你可以使用如Kaggle上的公开数据集。

导入库和数据

python复制代码

import pandas as pd

import numpy as np

from sklearn.feature_extraction.text import TfidfVectorizer

from sklearn.model_selection import train_test_split

from sklearn.naive_bayes import MultinomialNB

from sklearn.metrics import classification_report, confusion_matrix

from sklearn.pipeline import Pipeline

# 加载数据

df = pd.read_csv('spam_ham.csv', encoding='latin1')

df.head()

数据预处理

python复制代码

import re

from nltk.corpus import stopwords

from nltk.stem.porter import PorterStemmer

from nltk.tokenize import word_tokenize

# 文本清洗

def clean_text(text):

text = re.sub(r'<[^>]+>', '', text) # 去除HTML标签

text = re.sub(r'\\W+', ' ', text).lower() # 去除特殊字符并转为小写

words = word_tokenize(text)

stop_words = set(stopwords.words('english'))

stemmer = PorterStemmer()

clean_words = [stemmer.stem(word) for word in words if word not in stop_words]

return ' '.join(clean_words)

df['Text'] = df['Text'].apply(clean_text)

# 特征提取

vectorizer = TfidfVectorizer()

X = vectorizer.fit_transform(df['Text'])

y = df['Target'].map({'ham': 0, 'spam': 1})

# 划分数据集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

构建模型

python复制代码

# 创建朴素贝叶斯模型

model = MultinomialNB()

# 训练模型

model.fit(X_train, y_train)

# 预测测试集

y_pred = model.predict(X_test)

# 评估模型

print(confusion_matrix(y_test, y_pred))

print(classification_report(y_test, y_pred))

结果分析

通过混淆矩阵和分类报告,我们可以评估模型的性能。混淆矩阵显示了模型预测的正确和错误分类的数量,而分类报告则提供了精确度、召回率、F1分数等详细指标。

进一步优化

  • 调整TF-IDF参数:如max_df、min_df等,以优化特征选择。
  • 尝试其他算法:如逻辑回归、随机森林、SVM等,比较不同算法的效果。
  • 处理不平衡数据:如果数据集中垃圾邮件和非垃圾邮件的比例极不平衡,可以考虑使用过采样或欠采样技术。
结论

通过本文,我们了解了如何使用朴素贝叶斯算法结合Python进行垃圾邮件检测。从数据预处理

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
上海队前往杭州!2外援没随队,怀特塞德大概率赛季报销

上海队前往杭州!2外援没随队,怀特塞德大概率赛季报销

体育哲人
2026-05-30 18:22:09
中超巨大争议!纳萨里奥点球违例,进球无效染黄,拉莫斯暴怒

中超巨大争议!纳萨里奥点球违例,进球无效染黄,拉莫斯暴怒

奥拜尔
2026-05-30 20:54:20
D1804次列车受电弓遭异物击打,被困隧道内超2小时,乘客称全车停电闷热异常,身上像从水里捞出来的,备用列车已到现场并开始转运

D1804次列车受电弓遭异物击打,被困隧道内超2小时,乘客称全车停电闷热异常,身上像从水里捞出来的,备用列车已到现场并开始转运

台州交通广播
2026-05-30 13:47:54
新包装矿泉水停止销售,胖东来:系设计方面重大失误,正重新设计

新包装矿泉水停止销售,胖东来:系设计方面重大失误,正重新设计

界面新闻
2026-05-30 16:40:22
可怕:猪肉抗生素超标38倍,鸡蛋药物超标69倍!

可怕:猪肉抗生素超标38倍,鸡蛋药物超标69倍!

仕道
2026-05-29 11:58:11
杭州警方:“滨江区网红餐厅坍塌多人受伤”系AI编造虚假信息,违法人员被行政拘留三日

杭州警方:“滨江区网红餐厅坍塌多人受伤”系AI编造虚假信息,违法人员被行政拘留三日

都市快报橙柿互动
2026-05-30 18:00:11
为28元外卖恶意投诉骑手!985女白领遭全网社死,已被公司开除

为28元外卖恶意投诉骑手!985女白领遭全网社死,已被公司开除

网络易不易
2026-05-30 06:00:32
耿同学再下一城!南开免去陈某院长职务,14张图表确认学术不端

耿同学再下一城!南开免去陈某院长职务,14张图表确认学术不端

听心堂
2026-05-30 20:24:06
印度高温近50℃!宿舍没有空调 中国留学生被热到提前回国

印度高温近50℃!宿舍没有空调 中国留学生被热到提前回国

封面新闻
2026-05-30 14:26:04
黄仁勋:英语专业的学生有可能成为最成功的那批人

黄仁勋:英语专业的学生有可能成为最成功的那批人

麦可思研究
2026-05-30 11:19:36
温格:曾经我们离欧冠冠军就差13分钟,希望这次塔帅能完成任务

温格:曾经我们离欧冠冠军就差13分钟,希望这次塔帅能完成任务

懂球帝
2026-05-30 19:57:13
毒性堪比砒霜!正大量上市,一旦发苦赶紧吐掉!医生:煮熟也有毒

毒性堪比砒霜!正大量上市,一旦发苦赶紧吐掉!医生:煮熟也有毒

路医生健康科普
2026-05-30 20:15:03
六辆装甲车白守!无人机钻门缝炸穿指挥室,旅长当场脑浆迸裂

六辆装甲车白守!无人机钻门缝炸穿指挥室,旅长当场脑浆迸裂

深度报
2026-05-30 00:32:15
模仿黄仁勋走红后,“我现在很害怕”

模仿黄仁勋走红后,“我现在很害怕”

中国新闻周刊
2026-05-30 18:22:20
香港老戏骨“千面如来”刘洵去世

香港老戏骨“千面如来”刘洵去世

年代回忆
2026-05-30 10:20:07
35页PPT疯传:洛阳女子1女谈3男,每天卡时间,都已谈婚论嫁

35页PPT疯传:洛阳女子1女谈3男,每天卡时间,都已谈婚论嫁

烈史
2026-05-30 13:23:41
太可怕了!江苏女生哭诉侍候父亲的至暗时刻,字里行间恐惧与绝望

太可怕了!江苏女生哭诉侍候父亲的至暗时刻,字里行间恐惧与绝望

火山詩话
2026-05-30 17:59:42
俄罗斯无人机击中罗马尼亚,导致2人受伤,预计北约不会有大动作

俄罗斯无人机击中罗马尼亚,导致2人受伤,预计北约不会有大动作

山河路口
2026-05-29 14:04:31
给阿嬷的情书,新加坡官媒连批三天,最后承认:这东西,真挡不住

给阿嬷的情书,新加坡官媒连批三天,最后承认:这东西,真挡不住

娱说瑜悦
2026-05-30 17:03:54
永别了,“千面如来”刘洵,他真的是一位好演员!

永别了,“千面如来”刘洵,他真的是一位好演员!

新民周刊
2026-05-30 14:28:40
2026-05-30 22:24:49
每天五分钟玩转人工智能 incentive-icons
每天五分钟玩转人工智能
没有梦想和神经网络有什么区别
495文章数 54关注度
往期回顾 全部

科技要闻

车圈大佬发声:价格战远去,但竞争仍残酷

头条要闻

美防长香会谈中美关系 解放军专家学者代表团团长回应

头条要闻

美防长香会谈中美关系 解放军专家学者代表团团长回应

体育要闻

岁月不饶人!39岁德约鏖战近5小时拼到呕吐

娱乐要闻

张碧晨《歌手》 “活人微死” 自嘲

财经要闻

双汇管不住一头猪

汽车要闻

900V+3.2秒破百 领克10+&领克10上市16.99万元起

态度原创

家居
数码
亲子
本地
公开课

家居要闻

云栖 舒展如流云

数码要闻

酷睿Ultra 9+RTX 5090!宏碁旗舰游戏本发布:256GB内存、三Gen5槽

亲子要闻

夏季皮肤科门诊量激增!专家:别让特应性皮炎反复影响孩子成长

本地新闻

用剪纸的方式,打开江苏扬州

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版