机器学习——垃圾邮件识别——SVM、MNB模型使用

这篇具有很好参考价值的文章主要介绍了机器学习——垃圾邮件识别——SVM、MNB模型使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本次案例采用SVM、MNB模型进行对比

用Accuracy、F1 Score进行评估

话不多说直接上代码包括数据集下载

CSDNhttps://mp.csdn.net/mp_download/manage/download/UpDetailed


# 读取数据并用空字符串替换空值
df1 = pd.read_csv("spamham.csv")
df = df1.where((pd.notnull(df1)), '')

# 将垃圾邮件分类为 0,将非垃圾邮件分类为 1
df.loc[df["Category"] == 'ham', "Category",] = 1
df.loc[df["Category"] == 'spam', "Category",] = 0
# 将数据拆分为标签和文本。系统应该能够根据文本预测标签
df_x = df['Message']
df_y = df['Category']
# 拆分表格 - 80% 用于训练,20% 用于测试大小
x_train, x_test, y_train, y_test = train_test_split(df_x, df_y, train_size=0.8, test_size=0.2, random_state=4)

# 使用 Tfidf 矢量化器 进行特征提取、小写转换和停用词去除
tfvec = TfidfVectorizer(min_df=1, stop_words='english', lowercase=True)
x_trainFeat = tfvec.fit_transform(x_train)
x_testFeat = tfvec.transform(x_test)

# SVM 用于建模
y_trainSvm = y_train.astype('int')
classifierModel = LinearSVC()
classifierModel.fit(x_trainFeat, y_trainSvm)
predResult = classifierModel.predict(x_testFeat)

# GNB 用于建模
y_trainGnb = y_train.astype('int')
classifierModel2 = MultinomialNB()
classifierModel2.fit(x_trainFeat, y_trainGnb)
predResult2 = classifierModel2.predict(x_testFeat)

# 计算精度,转换为 int - 解决 - 无法处理未知和二进制的混合
y_test = y_test.astype('int')
#actual_Y = y_test.as_matrix()

print("~~~~~~~~~~SVM RESULTS~~~~~~~~~~")
#使用 SVM 的准确度得分
print("Accuracy Score : {0:.4f}".format(accuracy_score(y_test, predResult)*100))
#使用 SVM 的 FScore
print("F Score: {0: .4f}".format(f1_score(y_test, predResult, average='macro')*100))
cmSVM=confusion_matrix(y_test, predResult)
#“[真阴性假阳性\假阴性真阳性]”
print("Confusion matrix:")
print(cmSVM)


print("~~~~~~~~~~MNB RESULTS~~~~~~~~~~")
#使用 MNB 的准确度得分
print("Accuracy Score: {0:.4f}".format(accuracy_score(y_test, predResult2)*100))
#使用 MNB 的 FScore
print("F Score:{0: .4f}".format(f1_score(y_test, predResult2, average='macro')*100))
cmMNb=confusion_matrix(y_test, predResult2)
#“[真阴性假阳性\假阴性真阳性]”
print("Confusion matrix:")
print(cmMNb)

运行结果: 

机器学习——垃圾邮件识别——SVM、MNB模型使用

总结:

标称型:标称型目标变量的结果只在有限目标集中取值,如真与假(标称型目标变量主要用于分类)

数值型:数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001等 (数值型目标变量主要用于回归分析)文章来源地址https://www.toymoban.com/news/detail-504826.html

朴素贝叶斯

优点:在数据较少的情况下仍然有效,可以处理多类别问题。
缺点:对于输入数据的准备方式较为敏感。
适用数据类型:标称型数据

一般流程:
(1) 收集数据:可以使用任何方法。
(2) 准备数据:需要数值型或者布尔型数据。
(3) 分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好。
(4) 训练算法:计算不同的独立特征的条件概率。
(5) 测试算法:计算错误率。
(6) 使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴
素贝叶斯分类器,不一定非要是文本。

支持向量机

优点:泛化错误率低,计算开销不大,结果易解释。
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。
适用数据类型:数值型和标称型数据。

一般流程:
(1) 收集数据:可以使用任意方法。 
(2) 准备数据:需要数值型数据。 
(3) 分析数据:有助于可视化分隔超平面。 
(4) 训练算法:SVM的大部分时间都源自训练,该过程主要实现两个参数的调优。 
(5) 测试算法:十分简单的计算过程就可以实现。 
(6) 使用算法:几乎所有分类问题都可以使用SVM,值得一提的是,SVM本身是一个二类
分类器,对多类问题应用SVM需要对代码做一些修改。

到了这里,关于机器学习——垃圾邮件识别——SVM、MNB模型使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习-朴素贝叶斯过滤垃圾邮件

    什么是朴素贝叶斯算法:用贝叶斯定理来预测一个未知类别的样本属于各个类别的可能性,选择可能性最大的一个类别作为该样本的最终类别。 用这个算法处理垃圾邮件就可以理解为:用贝叶斯定理来预测一封由若干个单词组成的不知道是否为垃圾邮件的邮件,它是垃圾邮件

    2024年02月09日
    浏览(45)
  • 机器学习——朴素贝叶斯算法(垃圾邮件分类)

    先验概率 :指的是 事件发生前 的预判概率,可以根据历史数据/经验估算得到。例如,当我们需要判断西瓜是不是好瓜的时候,对纹理、根蒂等特征都不了解,只是平常我们买西瓜的时候买到好瓜的概率是70%,那么这个西瓜是好瓜的概率我们也可以认为是70%。这个概率70%就是

    2024年02月03日
    浏览(60)
  • 毕设 垃圾邮件(短信)分类算法实现 机器学习 深度学习

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月22日
    浏览(57)
  • 竞赛 垃圾邮件(短信)分类算法实现 机器学习 深度学习

    🔥 优质竞赛项目系列,今天要分享的是 🚩 垃圾邮件(短信)分类算法实现 机器学习 深度学习 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https:

    2024年04月17日
    浏览(32)
  • 机器学习-基于朴素贝叶斯的垃圾邮件分类

    概率论是许多机器学习算法的基础,此篇博客会给出一些使用概率论进行分类的方法。 首先从一个最简单的概率分类器开始,然后给出一些假设来学习朴素贝叶斯分类器。我们称之为“朴素”,是因为整个形式化过程只做最原始、最简单的假设。 我们还将构建另一个分类器

    2024年02月02日
    浏览(48)
  • 计算机竞赛 垃圾邮件(短信)分类算法实现 机器学习 深度学习

    🔥 优质竞赛项目系列,今天要分享的是 🚩 垃圾邮件(短信)分类算法实现 机器学习 深度学习 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https:

    2024年02月11日
    浏览(51)
  • 机器学习——基于朴素贝叶斯分类算法实现垃圾邮件分类

    贝叶斯定理: 贝叶斯理论指的是,根据一个已发生事件的概率,计算另一个事件的发生概率。贝叶斯理论从数学上的表示可以写成这样:  ,在这里A和B都是事件, P(B)P(B)不为0。 在贝叶斯定理中: 1. P(A) 称为”先验概率”,即在B事件发生之前,我们对A事件概率的一个判断。如

    2024年02月04日
    浏览(53)
  • [学习笔记] [机器学习] 10. 支持向量机 SVM(SVM 算法原理、SVM API介绍、SVM 损失函数、SVM 回归、手写数字识别)

    视频链接 数据集下载地址:无需下载 学习目标: 了解什么是 SVM 算法 掌握 SVM 算法的原理 知道 SVM 算法的损失函数 知道 SVM 算法的核函数 了解 SVM 算法在回归问题中的使用 应用 SVM 算法实现手写数字识别器 学习目标: 了解 SVM 算法的定义 知道软间隔和硬间隔 在很久以前的

    2024年02月09日
    浏览(91)
  • 机器学习:基于支持向量机(SVM)进行人脸识别预测

    作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍 📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪 专栏案例:

    2024年01月23日
    浏览(50)
  • 【机器学习】SVM支持向量机模型

     本站原创文章,转载请说明来自 《老饼讲解-机器学习》 ml.bbbdata.com 目录 一. SVM的目标和思想    1.1 SVM硬间隔模型的原始目的 1.2 SVM的直接目标 1.3 什么是支持向量  二. SVM的支持平面的表示方式 2.1 支持面表示方式的初步思路 2.2 初步思路的缺陷与改进 2.3 支持面的最终表示

    2023年04月23日
    浏览(205)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包