13-垃圾邮件分类2

Posted ljm41

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13-垃圾邮件分类2相关的知识,希望对你有一定的参考价值。

1.读取

 技术图片

2.数据预处理

 技术图片

3.数据划分—训练集和测试集数据划分

from sklearn.model_selection import train_test_split

x_train,x_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=0, stratify=y_train)

  ●# data :所要划分的样本特征集

  ●# target :所要划分的样本结果集

  ●#test_size :样本占比,如果是整数的话就是样本的数量

  ●# random_state :是随机数的种子,其实就是该组随机数的编号, 在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。

  ●类分布不平衡的情况下会用到stratify。将stratify=X就是按照X中的比例分配,将stratify=y就是按照y中的比例分配

测试模型好不好要用模型之前没见过的邮件

技术图片

4.文本特征提取

sklearn.feature_extraction.text.CountVectorizer

https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html?highlight=sklearn%20feature_extraction%20text%20tfidfvectorizer

sklearn.feature_extraction.text.TfidfVectorizer

https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html?highlight=sklearn%20feature_extraction%20text%20tfidfvectorizer#sklearn.feature_extraction.text.TfidfVectorizer

from sklearn.feature_extraction.text import TfidfVectorizer

tfidf2 = TfidfVectorizer()

●将文本数据转化成特征向量的过程,比较常用的文本特征表示法为词袋法

●词集: 0、1

●词袋模型:

  ●不考虑词语出现的顺序,每个出现过的词汇单独作为-列特征,这些不重复的特征词汇集合为词表

  ●每一个文本都可以在很长的词表上统计出一个很多列的特征向量

  ●如果每个文本都出现的词汇,一般被标记为停用词不计入特征向量

主要有两个api来实现CountVectorizer和TfidfVectorizer

  ●CountVectorizer :

    ●只考虑词汇在文本中出现的频率

  ●TfidfVectorizer :

    ●除了考量某词汇在本文本出现的频率,还关注包含这个词汇的其它文本的数量

    ●能够削减高频没有意义的词汇出现带来的影响,挖掘更有意义的特征

 

 技术图片

 

 技术图片

技术图片

观察邮件与向量的关系

 技术图片

向量还原为邮件

 技术图片

4.模型选择

from sklearn.naive_bayes import GaussianNB

from sklearn.naive_bayes import MultinomialNB

 技术图片

 说明为什么选择这个模型?

  多项式朴素贝叶斯分类器适用于离散特征的情况,常用于文本分类,特征是单词,值是单词的出现次数。而高斯模型是将特征为连续型变量的值转化为离散型变量的值,比如说人的身高,物体的长度,这些特征可以转换成离散型的值。

5.模型评价:混淆矩阵,分类报告

from sklearn.metrics import confusion_matrix

confusion_matrix = confusion_matrix(y_test, y_predict)

说明混淆矩阵的含义

●混淆矩阵confusion-matrix

  ●TP(True Positive):真实为0 ,预测也为0

  ●FN(False Negative):真实为0 ,预测为1

  ●FP(False Positive):真实为1 , 预测为0

  ●TN(True Negative):真实为1 ,预测也为1

from sklearn.metrics import classification_report

说明准确率、精确率、召回率、F值分别代表的意义 

 技术图片

 技术图片

6.比较与总结

如果用CountVectorizer进行文本特征生成,与TfidfVectorizer相比,效果如何?

  对于每一个训练文本,CountVectorizer只考虑每种词汇在该训练文本中出现的频率,而TfidfVectorizer除了考量某一词汇在当前训练文本中出现的频率之外,同时关注包含这个词汇的其它训练文本数目的倒数。相比之下,训练文本的数量越多,TfidfVectorizer这种特征量化方式就更有优势。

以上是关于13-垃圾邮件分类2的主要内容,如果未能解决你的问题,请参考以下文章

13-垃圾邮件分类2

13-垃圾邮件分类2

13.垃圾邮件分类2

13-垃圾邮件分类2

13-垃圾邮件分类2

13-垃圾邮件分类2