标题 | 基于朴素贝叶斯的机器学习实验教学设计 |
范文 | 王敏 罗婧雯 刘军 刘沛泽
【摘要】? ? 贝叶斯学习是机器学习理论中的重要研究方向。本文主要实现基于朴素贝叶斯的机器学习实验教学设计,贝叶斯学习以贝叶斯法则为基础,通过已了解的数据分布的先验知识,结合样本训练数据来估算出整体数据的数学模型。贝叶斯学习的结果是获得一组变量的联合概率分布。贝叶斯学习由于其用概率的形式来表示不确定知识,故对不确定形式的问题它有独特的描述和计算优势。而朴素贝叶斯是在属性独立性假设的条件下进行计算,可以大大减小计算的复杂程度。实验设计目的是根据朴素贝叶斯公式实现对文档的分类,给学生提供一种实验教学案例。 【关键词】? ? 朴素贝叶斯? ? 实验教学设计? ? 文本分类 一、实验研究背景与目的 本实验设计主要基于朴素贝叶斯理论,目前是为学生提供基于贝叶斯理论的实验项目,让学生更好地理解该理论解决实际问题。 随着互联网的飞速发展, 海量数据注入到通讯设备中。如此大量的信息就让信息检索和数据挖掘的重要性更加突出。文本分类作为数据挖掘的一部分也逐渐被人们重视起来。其中文本分类的主要内容是在预先给定的类标签的集下, 根据文章内容, 确定它的类别。我们接下来将要通过三个方面来介绍:文本表示, 分类器构造和分类器评估。 二、实验设计思路 本实验的思路是把一部分含有女性、体育、文学出版、校园的话题用网络爬虫爬下来存在特定的文档中,然后通过朴素贝叶斯分类算法实现贝叶斯分类。 三、方案设计 系统设计流程框图如下。 四、具体算法描述 除去噪声,如格式转换,去掉符号,整体规范化;遍历的读取一个文件下的每个文本。操作如下。 def readFile(path): with open(path, 'r', errors='ignore') as file: content = file.read() return content def saveFile(path, result): with open(path, 'w', errors='ignore') as file: file.write(result) 4.1 jieba分词 1)首先利用import调用jieba模块、TF-IDF分词模块、朴素贝叶斯算法模块; import jieba 2)jieba分词算法的基本原理是:1.基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG); 2.采用动态规划查找最大概率路径,找出基于词频的最大切分组合; 3.对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法; 代码如下: def segText(inputPath, resultPath): fatherLists = os.listdir(inputPath) for eachDir in fatherLists: eachPath = inputPath + eachDir + "/"? ? ? ? ? each_resultPath = resultPath + eachDir + "/" if not os.path.exists(each_resultPath): os.makedirs(each_resultPath) childLists = os.listdir(eachPath) for eachFile in childLists: eachPathFile = eachPath + eachFile #? print(eachFile) content = readFile(eachPathFile) # content = str(content) result = (str(content)).replace("\r\n", "").strip() # result = content.replace("\r\n","").strip() cutResult = jieba.cut(result) saveFile(each_resultPath + eachFile, " ".join(cutResult)) 4.2 TF-IDF逆文本頻率指数 1)首先调用TF-IDF向量转换类和向量生成类。 from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer 2)TF-IDF逆文本频率指数是一种用于信息检索与数据挖掘的常用加权技术。是一种统计方法,用以评估一个词对于一个语料库中一份文件的重要程度。词的重要性随着在文件中出现的次数正比增加,同时随着它在语料库其他文件中出现的频率反比下降。 3)TF-IDF词频算法实现。一个词在某一文档中出现次数比较多,其他文档没有出现,说明该词对该文档分类很重要。然而如果其他文档也出现比较多,说明该词的区分性不大,就用IDF来降低该词的权重。 TF-IDF=TF×IDF 其中,词频:TF=词在文档中出现的次数/文档中总词数; 逆文本频率:IDF=log(语料库中文档总数/包含该词的文档数+1)。 def getTFIDFMat(inputPath, stopWordList, outputPath): bunch = readBunch(inputPath) tfidfspace = Bunch(target_name=bunch.target_name,label=bunch.label, filenames=bunch.filenames, tdm=[], vocabulary={}) vectorizer = TfidfVectorizer(stop_words=stopWordList, sublinear_tf=True, max_df=0.5) transformer = TfidfTransformer() tfidfspace.tdm = vectorizer.fit_transform(bunch.contents) tfidfspace.vocabulary = vectorizer.vocabulary_ writeBunch(outputPath, tfidfspace) 4.3朴素贝叶斯分类法 1)首先调用贝叶斯分类法算法模块,这个模块是调用已有的别人写好的算法,下面会详细介绍原理过程。 from sklearn.naive_bayes import MultinomialNB 2)朴素贝叶斯原理 朴素贝叶斯分类器采用了“属性条件独立性假设” 对已知类别假设所有属性相互独立。换言之,假设每个属性独立地对分类结果发生影响。故贝叶斯公式可以重写为 因为给定样本P(x)为已知的,故贝叶斯准则就可以转化为 显然,朴素贝叶斯分类器的训练过程就是基于训练集 D 来估计类先验概率P(c),并为每个属性估计条件概率。 令Dc表示訓练集D中第c类样本组成的集合,若有充足的独立同分布样本则可容易地估计出类先验概率。 对离散属性而言,令表示Dc中在第i个属性上取值为的样本组成的集合,则条件概率可估计为 程序如下: def bayesAlgorithm(trainPath, testPath): trainSet = readBunch(trainPath) testSet = readBunch(testPath) clf = MultinomialNB(alpha=0.001).fit(trainSet.tdm, trainSet.label) #alpha:0.001 alpha 越小,迭代次数越多,精度越高 #print(shape(trainSet.tdm))? #输出单词矩阵的类型 #print(shape(testSet.tdm)) predicted = clf.predict(testSet.tdm) total = len(predicted) rate = 0 for flabel, fileName, expct_cate in zip(testSet.label, testSet.filenames, predicted): if flabel != expct_cate: rate += 1 print(fileName, ":实际类别:", flabel, "-->预测类别:", expct_cate) print("erroe rate:", float(rate) * 100 / float(total), "%") 五、系统测试情况 下图中data文件夹中是原始数据,result文件夹是jieba分词结果,stop是文本预处理筛掉的的停用词。test是测试数据,test_segResult是测试结果。 其中测试数据集:女性话题有38个,体育话题115个,文学出版话题31个,校园话题16个,以下是测试出错的结果。其中校园话题出错的概率最大。 六、小结 此程序简单易懂,是在贝叶斯的基础上进一步了解了朴素贝叶斯公式的原理及其运用,介绍了jieba分词和TF-IDF逆文本频率指数及其应用,在实际案例中错误率仅为0.570,准确率较高,可以在实验课程教学中使用。 参? 考? 文? 献 [1]苏金树, 张博锋, 徐昕.基于机器学习的文本分类技术研究进展[J].软件学报, 2006, 17 (09) :1848-1859. [2]李学明, 李海瑞, 薛亮, 何光军.基于信息增益与信息熵的TFIDF算法[J].计算机工程, 2012, 38 (08) :37-40. [3]Tom M.Mitchell著;曾华军等译,机器学习[M]. 机械工业出版社,2003. [4]陈叶旺,余金山. 一种改进的朴素贝叶斯文本分类方法[J].? 华侨大学学报(自然科学版). 2011(04). |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。