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

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模式。 举个例子,你想登录豆瓣去看看电影评论,但你丫的从来没注册过豆…

修改tomcat服务器图标,如何修改tomcat项目的图标(两种)

我们在查看网页的时候很多网站都有自己的小图标,系统读取这个标志的时候先从你的项目的根目录下读看有没有favicon.ico文件,如果有直接显示这个图标,如果没有,则会去webapps/root/下找这个文件,如果这两个地方都没有&a…

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

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

java学习(108):StringBuilder连接字符串和删除操作

public class test48 {//连接字符串public static String concatString(String base,String[] str){StringBuilder buildernew StringBuilder(base);//构建可变字符串for(String s:str){builder.append(" "s);}return builder.toString();}//删除空格public static …

cad怎么把图层英文变成中文_CAD图层管理器昨天是中文的今天怎么变英文 – 手机爱问...

2008-06-14ctrlaltdel,调不出运行输入 c回车打开组策略,在左侧选用户配置/管理模板/系统/CtelAltDel选项/在右侧选,“删除任务管理器”双击它,在打开的对话框中选择“未配置”,设置后按应用确定,重启电脑即可。 另一个…

pcl-三维点云库

pcl-三维点云库 pcl::PointCloud的一些属性值 width(int) two meanings:it can specify the total number of points in the cloud for unorganized point cloud datasets;it can specify the width (total number of points in a row) of an organized point cloud dataset.Th…

奇迹世界服务器不响应,sun-奇迹世界 目前常见问题解决方法

Q:游戏安装过程中提示“ctor.dll路径错误,无法查找相关模块”的解决方法A:下载时没有完整的下载到安装文件时发生类似的问题。先到C:\ProgramFiles\Common Files\InstallShield\6\Intel32文件夹然后将里面的文件删除后,重新安装游…

java学习(109):StringBuilder,stringbuffer,string区别

String、StringBuffer和StringBuilder区别 1、长度是否可变 String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象S…

etlgr是什么服务器_ETL是指什么 - 金融行业 - ITPUB论坛-中国专业的IT技术社区

ETL 简介 frim wwwETL是建置或更新数据仓储中的内容时,对于所需之数据进行数据撷取、转换、加载的过程,由字面上即能得知它是由三个环环相扣的步骤所组成:Extract - 数据撷取、Transform - 数据转换与Load - 数据加载 。ETL ( Extract-Tran…

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

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

1001 A+B Format (20 分)

题意&#xff1a;给出俩个整数a,b(不超过10^9) &#xff0c;求ab的值 &#xff0c;并按照xxx,xxx,xxx的格式输出 #include <iostream> using namespace std; int main() {int a, b;cin >> a >> b;string s to_string(a b);int len s.length();for (int i …

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("请输入员工姓名"…

上传文件Base64格式(React)

记录一下上传文件时将文件数据转为Base64的方法 通过 FileReader对象创建一个实例&#xff0c;然后使用 readAsDataURL方法将数据转为Base64格式 注意: 读取过程是异步的 绑定onload事件&#xff0c;该事件在数据读取完成后触发 具体代码&#xff08;react项目中&#xff09;&a…

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

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

服务器水厂物资管理系统,水处理管理系统及水处理管理服务器 Water management systems and water treatment management server...

摘要&#xff1a;The present invention relates to a water treatment management system and a water treatment management server. As adjustment for the operators which are related with the water source is difficult, utilization of the regenerated water from th…

java学习(111):日期时间格式化

package com.zx; import java.text.DateFormat; 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.println(this.getSex(…