这里经由过程输入 print dictionary 指令就可以输出词典。须要留意的是,你在打印输出的词典里可能会看到很多可有可无的词,这一点无需担心,因为我们在后续的步调中老是有机会对其进行调剂的。别的,如不雅你是严格按照上文提到的数据集操作的话,那么你的词典里应当会有以下这些高频词(本例中我们拔取了频率最高的 3000 个词):
[('order', 1414), ('address', 1293), ('report', 1216), ('mail', 1127), ('send', 1079), ('language', 1072), ('email', 1051), ('program', 1001), ('our', 987), ('list', 935), ('one', 917), ('name', 878), ('receive', 826), ('money', 788), ('free', 762)
3. 特点提取
词典预备好之后,我们就可以对练习集里的每一封邮件提取维度是 3000 的词数向量 word count vector(这个向量就是我们的特点),每一个词数向量都包含之前选定的 3000 个高频词具体的出现频率。当然,你可能猜到了,大年夜部分出现的频率应当会是 0。举个栗子:比如我们字典里有 500 个词,每个词数向量包含了练习集里这 500 个词典出现频率。假设练习集有一组文本:“Get the work done, work done”。那么,这句话对应的词数向量应当是如许的:[0,0,0,0,0,…….0,0,2,0,0,0,……,0,0,1,0,0,…0,0,1,0,0,……2,0,0,0,0,0]。在这里,句中的每个词出现的频率都能显示出来:这些词分别对应长度为 500 的词数向量中的第 296,359,415 和 495 的地位,其他地位显示为 0。
在这里我们会应用 scikit-learn 机械进修库来练习分类器,scikit-learn 库的相干链接如下:
最后,博客中提到的完全 python 代码详见如下链接:
下面这个 python 函数会赞助我们生成一个特点向量矩阵,该矩阵有 700 行 3000 列。个中每一行代表练习集中 700 封邮件的的每一封邮件,每一列代表词典中的 3000 个关键词。在 “ij” 地位上的值代表了词典中第 j 个词在该邮件(第 i 封)中出现的次数。
http://t.cn/SMzAoZ
这是一个绑定在第三方 python 发行版 Anaconda 的开源机械进修库,可以跟随 Anaconda 一同下载安装,或者也可以按照以下链接中的提示自力安装:
http://t.cn/8kkrVlQ
这里我们练习了两个模型,分别是朴实贝叶斯分类器和 SVM(支撑向量机)。朴实贝叶斯分类器是一个传统的监督型概率分类器,在文本分类的场景中非经常用,它基于贝叶斯定理,假设每一对特点都是互相自力的。SVM 是监督型的二分类器,面对特点数量较多的场景时异常有效,其最注目标是大年夜练习数据平分别出一组子集,称为支撑向量(分别超平面的界线)。剖断测试数据最终类其余 SVM 决定计划函数恰是基于该支撑向量和内核技能(kernel trick)的。
分类器练习完成后,我们可以在测试集上测试模型的机能。这里我们为测试集中的每封邮件提取字数向量,然后悠揭捉?练好的朴实贝叶斯分类器和 SVM 模型,猜测它的类别(通俗邮件或垃圾邮件)。下面是垃圾邮件分类器的完全 python 代码,别的还须要包含我们在步调 2 和步调 3 中定义的两个函数。
- import os
- import numpy as np
- from collections import Counter
- from sklearn.naive_bayes import MultinomialNB, GaussianNB, BernoulliNB
- from sklearn.svm import SVC, NuSVC, LinearSVC
- from sklearn.metrics import confusion_matrix
- # Create a dictionary of words with its frequency
- train_dir = 'train-mails'
- dictionary = make_Dictionary(train_dir)
- # Prepare feature vectors per training mail and its labels
- train_labels = np.zeros(702)
- train_labels[351
推荐阅读
【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! 云知声CTO梁家恩 梁家恩,云知声CTO.2001年卒业于中国科技大年夜学,2006年卒业于中国科学院主动化研究所,获博士学>>>详细阅读
本文标题:手把手教你用 Python 和 Scikit-Learn 实现垃圾邮件过滤
地址:http://www.17bianji.com/lsqh/36312.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示