作家
登录

手把手教你用 Python 和 Scikit-Learn 实现垃圾邮件过滤

作者: 来源: 2017-07-20 14:06:54 阅读 我要评论

:701] = 1 
  • train_matrix = extract_features(train_dir) 
  •  
  • # Training SVM and Naive bayes classifier 
  •  
  • model1 = MultinomialNB() 
  • model2 = LinearSVC() 
  • model1.fit(train_matrix,train_labels) 
  • model2.fit(train_matrix,train_labels) 
  •  
  • # Test the unseen mails for Spam 
  • test_dir = 'test-mails' 
  • test_matrix = extract_features(test_dir) 
  • test_labels = np.zeros(260
  • test_labels[130:260] = 1 
  • result1 = model1.predict(test_matrix) 
  • result2 = model2.predict(test_matrix) 
  • print confusion_matrix(test_labels,result1) 
  • print confusion_matrix(test_labels,result2) 
  •  

    机能测试

    这里我们的测试集中包含 130 封垃圾邮件和 130 封非垃圾邮件,如不雅你已经顺利完成了之前的所有步调,那么你将会获得如下的结不雅。这里显示的昵嘟个模型在测试数据中的混淆矩阵,对角元素代表了精确识其余邮件数,非对角元素代表的则是缺点的分类。

    混淆矩阵

    可以看到,两个模型在测试集上有着邻近的机能,但 SVM 更偏向垃圾邮件的剖断。须要留意的是,这里的测试数据集既没有效于创建字典,也没有效于模型练习。

      拓展

    感兴趣的同伙可以按照上文所述的步调进行一些拓展,这里介绍拓展相干的数据库和结不雅。

    拓展应用的是已经预处理好的 Euron-spam 数据库,个中包含了 6 个目次,33716 封邮件,每个目次中都包含非垃圾邮件和垃圾邮件子目次,非垃圾邮件和垃圾邮件的总数分别为 16545 封和 17171 封。Euron-spam 库的下载链接如下:

    http://t.cn/RK84mv6

    须要留意的是,因为 Euron-spam 数据库的组织情势有别于上文提到的 ling-spam 库,是以上文的一些函数也须要做少量的修改才能应用于 Euron-spam。

    这里我们将 Euron-spam 数据库按照 3:2 的比例分为练习集和测试集,按照上文的步调,我们在 13478 封测试邮件中获得了如下结不雅:

    结不雅

    可以看到,SVM 的表示略胜于朴实贝叶斯。

      总结

    在本文中我们尽量坚削发单易懂的论述,省略了很多技巧性强的讲解和名词。我们欲望这是一篇简单易懂的教程,欲望这篇教程可以对文本分析感兴趣的初学者们有所裨益。

    有些同伙可能会对朴实贝叶斯模型和 SVM 模型背后的数学道理认为好奇,这里须要指出的是,SVM 在数学上属于比较复杂的模型,老诚素贝叶斯则相对更轻易懂得一些。我们当然鼓励对数学道理感兴趣的同慌绫乔深刻摸索,关于这些数学模型网上有异常具体的教程和实例。除此之外,采取不合的方法实现同一个目标,也是一种很好的研究办法。例如可声调节如下一些参数,不雅察它们对垃圾邮件过滤的实际效不雅的影响:

    a) 练习数据的大年夜小

    b) 词典的大年夜小

    c) 不合的机械进修模型,包含 GaussianNB,BernoulliNB,SVC

    d) 不合的 SVM 模型参数

    e) 删除可有可无的词来改进词典 (例如手动删除)

    f) 采取其他特点模型 (寻找 td-idf)

    http://t.cn/R6ZeuiN

    本文转自雷锋网,原文来自一篇国外大年夜神的博客,由雷锋网字幕组 彭艳蕾、林立宏 两位组员合营编译完成。

    【编辑推荐】

    1. R vs Python:R是如今最好的数据科学说话吗?
    2. 一文详解神经收集 BP 算法道理及 Python 实现
    3. 详解基于朴实贝叶斯的情感分析及 Python 实现
    4. 大年夜情况设置到内存分析:Python代码优化指南
    5. 大年夜零开端教你用Python做词云
    【义务编辑:张子龙 TEL:(010)68476606】

      推荐阅读

      云知声梁家恩:智能语音需攻克的难点在哪?

    【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! 云知声CTO梁家恩 梁家恩,云知声CTO.2001年卒业于中国科技大年夜学,2006年卒业于中国科学院主动化研究所,获博士学>>>详细阅读


    本文标题:手把手教你用 Python 和 Scikit-Learn 实现垃圾邮件过滤

    地址:http://www.17bianji.com/lsqh/36312.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)