机器学习实战之朴素贝叶斯(三)示例:过滤垃圾邮件(含数据集)

转载请注明作者和出处:https://blog.csdn.net/weixin_45814668
微信公众号:qiongjian0427
知乎:https://www.zhihu.com/people/qiongjian0427
Github代码获取:https://github.com/qiongjian/Machine-learning/
Python版本: Python3.x

流程

(1)收集数据:提供文本文件。
(2)准备数据:将文本文件解析成词条向量。
(3)分析数据:检查词条确保解析的正确
(4)训练算法:使用我们之前建立的trainNB0()函数。
(5)测试算法:使用calssifyNB(),并且构建一个新的测试函数来计算文档集的错误率。
(6)使用算法:构建一个完整的程序对一组文档进行分类,将错分的文档输出。

导入

from numpy import *
import random
import math
import os

收集数据:提供文本文件

email 提取码:7pk8。点这里下载

准备数据:切分文本

先前的词向量是预先给定的,这次将介绍如何从文本文档中构建自己的词列表。

使用split()切分

对于一个文本字符串,可以使用Python的string.split()方法将其切分。

mySent='This book is the best book on Python or M.L. I have ever laid eyes upon.'
mySent.split()

结果:

['This','book','is','the','best','book','on','Python','or',
 'M.L.','I','have', 'ever', 'laid','eyes','upon.']

可以切分出所有词,但是标点符号也被当成词的一部分。

使用正则表达式切分

import re
regEx = re.compile('\\W*')
listOfTokens = regEx.split(mySent)
listOfTokens

结果:

['This','book','is','the','best','book','on','Python','or',
 'M','L','I', 'have','ever','laid','eyes','upon','']

可以切分出每个单词,不包括标点,但空字符串要去掉。

我们希望所有词的形式都是统一的,所以将字符串转换为小写(.lower())或者大写(.upper())。

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值