欢迎来到天天文库
浏览记录
ID:16132096
大小:456.20 KB
页数:17页
时间:2018-08-08
《数据挖掘-基于贝叶斯算法及knn算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、吸氧机,家用吸氧机价格 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文档分类器的JAVA实现(上) 本分类器的完整工程可以到点击打开链接下载,详细说明的运行方法,用eclipse可以运行,学习数据挖掘的朋友可以跑一下,有问题可以联系我,欢迎交流:)上文中描述了newsgroup18828文档集的预处理及贝叶斯算法的JAVA实现,下面我们来看看如何实现基于KNN算法的newsgroup文本分类器1KNN算法的描述KNN算法描述如下:STEPONE:文本向量化表示,由特征词的TF*IDF值计算STEPTWO:在新文本到
2、达后,根据特征词确定新文本的向量STEPTHREE:在训练文本集中选出与新文本最相似的K个文本,相似度用向量夹角余弦度量,计算公式为:其中,K值的确定目前没有很好的方法,一般采用先定一个初始值,然后根据实验测试的结果调整K值本项目中K取20STEPFOUR:在新文本的K个邻居中,依次计算每类的权重,每类的权重等于K个邻居中属于该类的训练样本与测试样本的相似度之和。STEPFIVE:比较类的权重,将文本分到权重最大的那个类别中。2文档TF-IDF计算及向量化表示实现KNN算法首先要实现文档的向量化表示计算特征词的TF*IDF,每个文档的向
3、量由包含所有特征词的TF*IDF值组成,每一维对应一个特征词TF及IDF的计算公式如下,分别为特征词的特征项频率和逆文档频率制氧机,鱼跃家庭制氧机吸氧机,家用吸氧机价格文档向量计算类ComputeWordsVector.java如下1.package com.pku.yangliu; 2.import java.io.BufferedReader; 3.import java.io.File; 4.import java.io.FileReader; 5.import java.io.FileWriter; 6.import
4、java.io.IOException; 7.import java.util.SortedMap; 8.import java.util.Map; 9.import java.util.Set; 10.import java.util.TreeMap; 11.import java.util.Iterator; 12. 13./**计算文档的属性向量,将所有文档向量化 14. * @author yangliu 15. * @qq 772330184 16. * @mail yang.liu@pku.edu.cn 17
5、. * 18. */ 19.public class ComputeWordsVector { 20. 21. /**计算文档的TF属性向量,直接写成二维数组遍历形式即可,没必要递归 22. * @param strDir 处理好的newsgroup文件目录的绝对路径 23. * @param trainSamplePercent 训练样例集占每个类目的比例 24. * @param indexOfSample 测试样例集的起始的测试样例编号 25. * @param wordMap
6、属性词典map 26. * @throws IOException 27. */ 28. public void computeTFMultiIDF(String strDir, double trainSamplePercent, int indexOfSample, Map iDFPerWordMap, Map wordMap) throws IOException{ 29. File fileDir = new File(st
7、rDir); 30. String word; 制氧机,鱼跃家庭制氧机吸氧机,家用吸氧机价格1. SortedMap TFPerDocMap = new TreeMap(); 2. //注意可以用两个写文件,一个专门写测试样例,一个专门写训练样例,用sampleType的值来表示 3. String trainFileDir = "F:/DataMiningSample/docVector/wordTFIDFMap
8、TrainSample"+indexOfSample; 4. String testFileDir = "F:/DataMiningSample/docVector/wordTFIDFMap
此文档下载收益归作者所有