一步步教你轻松学朴素贝叶斯模型算法Sklearn深度篇3

 阅读目录

一步步教你轻松学朴素贝叶斯深度篇3
(白宁超   2018年9月4日14:18:14)

导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果。所以很受欢迎,对于朴素贝叶斯的学习,本文首先介绍理论知识即朴素贝叶斯相关概念和公式推导,为了加深理解,采用一个维基百科上面性别分类例子进行形式化描述。然后通过编程实现朴素贝叶斯分类算法,并在屏蔽社区言论、垃圾邮件、个人广告中获取区域倾向等几个方面进行应用,包括创建数据集、数据预处理、词集模型和词袋模型、朴素贝叶斯模型训练和优化等。然后结合复旦大学新闻语料进行朴素贝叶斯的应用。最后,大家熟悉其原理和实现之后,采用机器学习sklearn包进行实现和优化。由于篇幅较长,采用理论理解、案例实现、sklearn优化三个部分进行学习。(本文原创,转载必须注明出处: 一步步教你轻松学朴素贝叶斯模型算法Sklearn深度篇3

目录

机器学习:一步步教你轻松学KNN模型算法

机器学习:一步步教你轻松学决策树算法

机器学习:一步步教你轻松学朴素贝叶斯模型算法理论篇1 

机器学习:一步步教你轻松学朴素贝叶斯模型实现篇2 

机器学习:一步步教你轻松学朴素贝叶斯模型算法Sklearn深度篇3

机器学习:一步步教你轻松学逻辑回归模型算法

机器学习:一步步教你轻松学K-means聚类算法

机器学习:一步步教你轻松学关联规则Apriori算法

机器学习: 一步步教你轻松学支持向量机SVM算法之理论篇1

10 机器学习: 一步步教你轻松学支持向量机SVM算法之案例篇2

11 机器学习: 一步步教你轻松学主成分分析PCA降维算法

12 机器学习: 一步步教你轻松学支持向量机SVM降维算法

更多文章请点击这里>>

复旦新闻语料:朴素贝叶斯中文文本分类

项目概述

本节介绍朴素贝叶斯分类算法模型在中文领域中的应用。我们对新闻语料进行多文本分类操作,本文选择艺术、文学、教育、哲学、历史五个类别的训练文本,然后采用新的测试语料进行分类预测。

收集数据

数据集是从复旦新闻语料库中抽取出来的,考虑学习使用,样本选择并不大。主要抽选艺术、文学、教育、哲学、历史五个类别各10篇文章。全部数据文档50篇。具体情况不同对收集数据要求不同,你也可以选择网络爬取,数据库导出等。这文档读取时候可能会遇到gbk,utf-8等格式共存的情况,这里建议采用BatUTF8Conv.exe点击下载)工具,进行utf-8格式批量转化。

准备数据

创建数据集代码如下:

'''创建数据集和类标签''' def loadDataSet():     docList = [];classList = [] # 文档列表、类别列表     dirlist = ['C3-Art','C4-Literature','C5-Education','C6-Philosophy','C7-History']     for j in range(5):         for i in range(1, 11): # 总共10个文档             # 切分,解析数据,并归类为 1 类别             wordList = textParse(open('./fudan/%s/%d.txt' % (dirlist[j],i),encoding='UTF-8').read())             docList.append(wordList)             classList.append(j)             # print(i,'\t','./fudan/%s/%d.txt' % (dirlist[j],i),'\t',j)     return docList,classList  ''' 利用jieba对文本进行分词,返回切词后的list ''' def textParse(str_doc):     # 正则过滤掉特殊符号、标点、英文、数字等。     import re     r1 = '[a-zA-Z0-9’!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘’![\\]^_`{|}~]+'     str_doc=re.sub(r1, '', str_doc)      # 创建停用词列表     stwlist = set([line.strip() for line in open('./stopwords.txt', 'r', encoding='utf-8').readlines()])     sent_list = str_doc.split('\n')     # word_2dlist = [rm_tokens(jieba.cut(part), stwlist) for part in sent_list]  # 分词并去停用词     word_2dlist = [rm_tokens([word+"/"+flag+" " for word, flag in pseg.cut(part) if flag in ['n','v','a','ns','nr','nt']], stwlist) for part in sent_list] # 带词性分词并去停用词     word_list = list(itertools.chain(*word_2dlist)) # 合并列表     return word_list    ''' 去掉一些停用词、数字、特殊符号 ''' def rm_tokens(words, stwlist):     words_list = list(word
                    
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信