使用朴素贝叶斯模型对邮件进行分类 |
您所在的位置:网站首页 › 使用朴素贝叶斯算法实现中文邮件分类 › 使用朴素贝叶斯模型对邮件进行分类 |
使用朴素贝叶斯模型对邮件进行分类
原创
云҉淡҉风҉轻҉ 2021-07-21 16:13:56 ©著作权 文章标签 python 文章分类 Python 编程语言 ©著作权归作者所有:来自51CTO博客作者云҉淡҉风҉轻҉的原创作品,请联系作者获取转载授权,否则将追究法律责任使用朴素贝叶斯模型对邮件进行分类https://blog.51cto.com/u_15309669/3154722 1.特征向量 每一个有效词汇在邮件中出现的次数(使用一维列表方法) word 词汇出现的次数 一维列表.count(word) 2.将列表转换为数组形式 array(参数) 创建垃圾邮件,正常邮件训练集 array(列表对象 或 表达式) 3.使用 朴素贝叶斯算法 model = MultinomialNB() 4.进行训练模型 model.fit model.fit(array数组,array数组) 5.对指定 topWords 数据使用函数 map(lambda x:words.count(x),topWords) 6.预测数据 model.predict ,返回值为 0 或 1 result = model.predict(array数组.reshape(1,-1))[0] 7.查看在不同区间的概率 model.predict_proba(array数组.reshape(1,-1)) 8.条件语句,预测的结果便于区分 1 为垃圾邮件,0 为 正常邮件 return "垃圾邮件" if result == 1 else "正常邮件" 程序: # 全部训练集中出现次数最多的前 600 个单词 topWords = getTopWords(600) vectors = [ ] for words in allWords: temp = list(map(lambda x:words.count(x),topWords)) # 获取前600个单词的出现的个数 vectors.append(temp) vectors = array(vectors) # 对训练集中的数据给定一个标签 # 0.txt~99.txt 为垃圾邮件,0 # 100~140 为有效邮件,1 labels = array([1] * 100 + [0] * 41) # 创建模型 model = MultinomialNB() model.fit(vectors,labels) # 训练样本数和标签 def predict(txtFile): words = getWordsFromFile(txtFile) # 获取有效字符 currentVector = array(tuple( lambda x:words.count(x),topWords )) # 查看有效词汇个数 result = model.predict(currentVector.reshape(1,-1))[0] # 查看预测的概率 print(model.predict_proba(currentVector.reshape(1,-1))) return "垃圾邮件" if result == 1 else "正常邮件"2020-04-11 如果觉得文章不错,可以分享给其他人哟~ 赞 收藏 评论 分享 微博 QQ 微信 举报上一篇:获取全部 txt 文本中出现次数最多的前N个词汇 下一篇:函数进阶1 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |