预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共17页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

吸氧机,HYPERLINK"http://www.qingyangblog.com"家用吸氧机价格 制氧机,HYPERLINK"http://www.qingyangblog.com"鱼跃家庭制氧机 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文档分类器的JAVA实现(上)本分类器的完整工程可以到点击打开链接下载,详细说明的运行方法,用eclipse可以运行,学习数据挖掘的朋友可以跑一下,有问题可以联系我,欢迎交流:) 上文中描述了newsgroup18828文档集的预处理及贝叶斯算法的JAVA实现,下面我们来看看如何实现基于KNN算法的newsgroup文本分类器 1KNN算法的描述 KNN算法描述如下:STEPONE:文本向量化表示,由特征词的TF*IDF值计算STEPTWO:在新文本到达后,根据特征词确定新文本的向量STEPTHREE:在训练文本集中选出与新文本最相似的K个文本,相似度用向量夹角余弦度量,计算公式为: 其中,K值的确定目前没有很好的方法,一般采用先定一个初始值,然后根据实验测试的结果调整K值本项目中K取20 STEPFOUR:在新文本的K个邻居中,依次计算每类的权重,每类的权重等于K个邻居中属于该类的训练样本与测试样本的相似度之和。STEPFIVE:比较类的权重,将文本分到权重最大的那个类别中。 2文档TF-IDF计算及向量化表示 实现KNN算法首先要实现文档的向量化表示计算特征词的TF*IDF,每个文档的向量由包含所有特征词的TF*IDF值组成,每一维对应一个特征词 TF及IDF的计算公式如下,分别为特征词的特征项频率和逆文档频率 文档向量计算类ComputeWordsVector.java如下 packagecom.pku.yangliu; importjava.io.BufferedReader; importjava.io.File; importjava.io.FileReader; importjava.io.FileWriter; importjava.io.IOException; importjava.util.SortedMap; importjava.util.Map; importjava.util.Set; importjava.util.TreeMap; importjava.util.Iterator; /**计算文档的属性向量,将所有文档向量化 *@authoryangliu *@qq772330184 *@mailyang.liu@pku.edu.cn * */ publicclassComputeWordsVector{ /**计算文档的TF属性向量,直接写成二维数组遍历形式即可,没必要递归 *@paramstrDir处理好的newsgroup文件目录的绝对路径 *@paramtrainSamplePercent训练样例集占每个类目的比例 *@paramindexOfSample测试样例集的起始的测试样例编号 *@paramwordMap属性词典map *@throwsIOException */ publicvoidcomputeTFMultiIDF(StringstrDir,doubletrainSamplePercent,intindexOfSample,Map<String,Double>iDFPerWordMap,Map<String,Double>wordMap)throwsIOException{ FilefileDir=newFile(strDir); Stringword; SortedMap<String,Double>TFPerDocMap=newTreeMap<String,Double>(); //注意可以用两个写文件,一个专门写测试样例,一个专门写训练样例,用sampleType的值来表示 StringtrainFileDir="F:/DataMiningSample/docVector/wordTFIDFMapTrainSample"+indexOfSample; StringtestFileDir="F:/DataMiningSample/docVector/wordTFIDFMapTestSample"+indexOfSample; FileWritertsTrainWriter=newFileWriter(newFile(trainFileDir)); FileWritertsTestWrtier=newFileWriter(newFile(testFileDir)); FileWritertsWriter=tsTrainWriter; File[]sampleDir=fileDir.listF