朴素贝叶斯应用:垃圾邮件分类

1. 数据准备:收集数据与读取

2. 数据预处理:处理数据

3. 训练集与测试集:将先验数据按一定比例进行拆分。

4. 提取数据特征,将文本解析为词向量 。

5. 训练模型:建立模型,用训练数据训练模型。即根据训练样本集,计算词项出现的概率P(xi|y),后得到各类下词汇出现概率的向量 。

6. 测试模型:用测试数据集评估模型预测的正确率。

混淆矩阵

准确率、精确率、召回率、F值

import csv
file_path =r'E:\jupyter\SMSSpamCollectionjsn.txt'#原始的邮件
sms=open(file_path,'r',encoding='utf-8')
csv_reader=csv.reader(sms,delimiter='\t')
sms_data=[]#邮件的内容
sms_label=[]#邮件的类别
for line in csv_reader:sms_label.append(line[0])sms_data.append(line[1])
sms.close()#对数据预处理
sms_data1 = []#存放处理过的邮件
for line in sms_data:#对邮件的内容进行处理for k in line:if k.isalpha() is False:# 不是字母,发生替换操作:newString = line.replace(k," ")dataList = newString.split(" ")sms_data1.append(dataList)#去掉长度小于3的词和没有语义的词
sms_data2= []
for line in sms_data:dataList = []for i in line:if i != '' and len(i) > 3 and i.isalpha():dataList.append(i)dataString = ' '.join(dataList)sms_data.append(dataString)
sms_data =sms_data2##训练集与测试集:将先验数据按一定比例进行拆分
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(sms_data2,sms_label,test_size=0.3,random_state=0,stratify=sms_label)#提取数据特征,将文本解析为词向量
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer=TfidfVectorizer(min_df=2,ngram_range=(1,2),stop_words='english',strip_accents='unicode',norm='l2')
X_train=vectorizer.fit_transform(x_train)
X_test=vectorizer.transform(x_test)#朴素贝叶斯分类器
from sklearn.navie_bayes import MultinomialNB
clf= MultinomialNB().fit(X_train,y_train)
y_nb_pred=clf.predict(X_test)#分类结果显示
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
print(y_nb_pred.shape,y_nb_pred)#x_test预测结果
print('nb_confusion_matrix:')
cm=confusion_matrix(y_test,y_nb_pred)#混淆矩阵
print(cm)
print('nb_classification_report:')
cr=classification_report(y_test,y_nb_pred)#主要分类指标的文本报告
print(cr)

  

转载于:https://www.cnblogs.com/woo-616366/p/10079744.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java学习(106):字符串tocharArray,tolowercase,touppercase方法

public class test45 {//将给定的字符串返回成一个数组public static char[] toArrayFromString(String target){return target.toCharArray();}//大小写转换根据所给的第二个参数取决于大小写转换public static String toLowerUpper(char[] chs,char ch){if(chl||chL)return …

win10计算机启动一分钟重启,Win10开机提示电脑将在一分钟后自动重启怎么办?...

Win10开机提示“你的电脑将在一分钟后自动重启”怎么办? 最近一位用户又遇到了开机问题,该用户在开机后总是提示“你的电脑将在一分钟后自动重启,Windows遇到问题并且需要重新启动,你应立刻关闭此消息并保存你的工作。”&#xff…

xman的思维导图快捷键_一图胜千言,免费的多人协作思维导图工具,推荐收藏值得拥有哦...

今天给大家推荐一款思维导图制作软件:GitMind,捕捉灵感,激发创意。免费在线思维导图软件,简化逻辑梳理,集思广益,释放创造力在线脑图、思维导图、流程图、工业设计、工程管理,一图涵千面。GitMi…

java学习(107):StringBuilder

//stringbuilder public class test47 {public static void main(String[] args){StringBuilder buildernew StringBuilder("我是一个热血的少年");System.out.println(builder);} }运行结果

单点登录 之 OAuth

OAuth2.0是什么 OAuth2.0是什么——豆瓣和QQ的故事 OAuth简单说就是一种授权的协议,只要授权方和被授权方遵守这个协议去写代码提供服务,那双方就是实现了OAuth模式。 举个例子,你想登录豆瓣去看看电影评论,但你丫的从来没注册过豆…

ueditor上传图片写入数据库_手把手教你,如何用交管12123上传驾驶证照片!

12123APP普及后方便了很多司机朋友足不出户就能办理交管业务然而交管业务网上办理过程中因为一些小问题的存在导致业务受理受阻例如:司机朋友在使用“交管12123”手机APP办理补换领机动车驾驶证等业务时出现了以下情况▼这种情况可能有两种原因:第一种是…

楚留香手游系统互通的服务器,楚留香手游互通服务器汇总 哪些服能一起玩

楚留香手游互通服务器汇总 哪些服能一起玩由第一手游网小编为大家带来,游戏中有一些服务器它的安卓和ios是互通的可以一起玩的,楚留香手游哪些服能一起玩?哪些服务器互通?来看看吧!楚留香手游互通服务器汇总少侠不必担…

java学习(110):日期date类

import java.util.Date; import java.util.Scanner;public class test51 {public static void main(String[] args){Scanner innew Scanner(System.in);System.out.println("请输入员工信息");test50 empnew test50();System.out.println("请输入员工姓名"…

修改fragment的进入动画_3DsMax—牛顿摆球(动量守恒摆球)动画

最终效果本篇为图文教程,已经将牛顿摆球动画视频教程放到3dsmax学习网中,需要看视频教程的请到3DsMax学习网(www.dddmax.cn)教程中观看。01打开一个牛顿摆球模型,如图所示。(模型素材链接在底部)02进入层次面板,开启【仅影响轴】&…

java学习(112):simpledateformat进行格式化

package com.zx; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; //员工信息类 //date类 public class test50 {private String name;private String sex;private Date birth;public void showme(){System.out.println(this.getName…

matlab 写excel 慢_我在12w+的Python库中,发现了让Excel快到起飞的秘密......

Amber | 作者图片源自网络在这篇文章里,小编向大家介绍了Excel在数据分析中的妙用。不知大家在看完后,有没有亲自动手去体验下呢?有没有遇到什么问题呢?虽说Excel在处理小批量数据时的优势显而易见,但软件终究不是万能…

华为云服务器安装win10系统,云服务器可以安装win10吗

云服务器可以安装win10吗 内容精选换一换本节定义了云耀云服务器上报云监控的监控指标的命名空间,监控指标列表,各项监控指标的具体含义与使用说明,用户可以通过云监控检索云耀云服务器服务产生的监控指标和告警信息。SYS.ECS对于不同的操作系…

java学习(113):Calendar类

import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class test53 {public static void main(String[] args){//获取当前时间并且获取当前系统时间创建一个日历实例Calendar calCalendar.getInstance();//获取当前时间的年月日int …

CEF 添加F5刷新快捷键

Keyboardcodes&#xff1a;https://www.androidos.net.cn/android/4.3_r1/xref/external/webkit/Source/WebCore/platform/chromium/KeyboardCodes.h 1.首先要让我们自己的CefClient这个类公有继承CefKeyboardHandler 2.添加键盘事件构造函数 virtual CefRefPtr<CefKeyboard…

python 离散数据时间序列图_每个人都学的会的数据分析

数据分析已经成为数据时代各行各业突破各自行业发展瓶颈的最有效手段&#xff0c;无论是公司职员还是个体商户或大公司管理者&#xff0c;都需要有数据分析的能力。很多人认为数据分析能力就是对数据进行描述和做出漂亮的统计图形的能力&#xff0c;这是狭隘的理解。数据分析能…

java学习(114):Calendar类方法before

import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; //员工信息类 //date类 public class test50 {private String name;private String sex;private Date birth;public void showme(){System.out.println(this.getName());System.out.p…

notion函数_Notion使用指南 | Database篇

注&#xff1a;本篇文章为「侦探学园」&#xff08;BestDet&#xff09;专栏「学习利器锻造铺」中的稿件&#xff0c;首发于「侦探学园」。上篇文章给大家介绍了Notion的一些基本内容&#xff0c;但对于小白来说&#xff0c;上手还是有一定难度的。简单回顾一下上一篇文章的内容…

java学习(115):math方法

//math import java.util.Scanner; public class test55 {public static void main(String[] args){Scanner innew Scanner(System.in);System.out.println("请输入一个数字&#xff0c;求出他的绝对值");System.out.println("绝对值为"Math.abs(in.nextIn…

zemax模拟ld_Zemax光学设计实例(83)在非序列模式下LD阵列的光束整形

导论&#xff1a;半导体激光器(Laser Diode&#xff0c;LD)是很常用的激光器件&#xff0c;普遍应用在光通信、激光泵浦等领域。阵列LD通常因为管芯空间分布的原因导致光束质量较差&#xff0c;需要光束整形以后才能使用。本文以LD bar条为例&#xff0c;介绍在非序列模式下对L…

玩转oracle 11g(13):命令学习1

1建表&#xff0c;建个学生表&#xff0c;包含id&#xff0c;学号&#xff0c;性别&#xff0c;姓名&#xff0c;年龄&#xff0c;电话号码&#xff0c;奖学金 create table Student ( id varchar(20) primary key not null,--学生的id为唯一主键 xh number(4), --学号 se…