本文接数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文档分类器的JAVA实现(上)本分类器的完整工程可以到点击打开链接下载,详细说明的运行方法,用eclipse可以运行,学习数据挖掘的朋友可以跑一下,有问题可以联系我,欢迎交流:)
上文中描述了newsgroup18828文档集的预处理及贝叶斯算法的JAVA实现,下面我们来看看如何实现基于KNN算法的newsgroup文本分类器
1 KNN算法的描述
KNN算法描述如下:
STEP ONE:文本向量化表示,由特征词的TF*IDF值计算
STEP TWO:在新文本到达后,根据特征词确定新文本的向量
STEP THREE:在训练文本集中选出与新文本最相似的 K 个文本,相似度用向量夹角余弦度量,计算公式为:
其中,K 值的确定目前没有很好的方法,一般采用先定一个初始值,然后根据实验测试的结果调整 K 值
本项目中K取20
STEP FOUR:在新文本的 K 个邻居中,依次计算每类的权重,每类的权重等于K个邻居中属于该类的训练样本与测试样本的相似度之和。
STEP FIVE:比较类的权重,将文本分到权重最大的那个类别中。
2 文档TF-IDF计算及向量化表示
实现KNN算法首先要实现文档的向量化表示
计算特征词的TF*IDF,每个文档的向量由包含所有特征词的TF*IDF值组成,每一维对应一个特征词
TF及IDF的计算公式如下,分别为特征词的特征项频率和逆文档频率
文档向量计算类 ComputeWordsVector.java如下
3 KNN算法的实现
KNN算法的实现要注意
(1)用TreeMap<String,TreeMap<String,Double>>保存测试集和训练集
(2)注意要以"类目_文件名"作为每个文件的key,才能避免同名不同内容的文件出现
(3)注意设置JM参数,否则会出现JAVA heap溢出错误
(4)本程序用向量夹角余弦计算相似度
KNN算法实现类 KNNClassifier.java如下
分类器主类
5 KNN算法的分类结果
用混淆矩阵表示如下,第6次实验准确率达到82.10%
程序运行环境硬件环境:Intel Core 2 Duo CPU T5750 2GHZ, 2G内存,相同硬件环境计算和贝叶斯算法做对比
实验结果如上所示取出现次数大于等于4次的词共计30095个作为特征词: 10次交叉验证实验平均准确率78.19%,用时1h55min,10词实验准确率范围73.62%-82.10%,其中有3次实验准确率超过80%
6朴素贝叶斯与KNN分类准确率对比
取出现次数大于等于4次的词共计30095个作为特征词,做10次交叉验证实验,朴素贝叶斯和KNN算法对Newsgroup文档分类结果对比:
结论
分类准确率上,KNN算法更优
分类速度上,朴素贝叶斯算法更优
本分类器的完整工程可以到点击打开链接下载,有详细说明的运行方法,用eclipse可以运行,有问题可以联系我,欢迎交流:)
分享到:
相关推荐
。。。
。。。
基于贝叶斯及KNN算法的newsgroup文本分类器,eclipse工程 程序运行方法:用eclipse打开工程,并将newsgroup文档集解压到 F:\DataMiningSample\orginSample目录下,同时在F:\DataMiningSample\ 下建好如附件“F盘...
基于贝叶斯及KNN算法的newsgroup文本分类器,eclipse工程,免积分下载版 程序运行方法:用eclipse打开工程,并将newsgroup文档集解压到 F:\DataMiningSample\orginSample目录下,同时在F:\DataMiningSample\ 下建...
本文为基于贝叶斯算法和KNN算法的文本分类器Java实现,很详细,在网上找的,给大家共享看看
该方法在属性子集搜索上采用遗传算法进行随机搜索,在属性子集评价上采用KNN分类准确率和属性子集规模作为学习算法及评价指标。实验结果表明,该算法可有效地找出具有较好可分离性的属性子集,从而实现降维并提高...
K-近邻算法,又称为 KNN 算法,是数据挖掘技术中原理最简单的算法。 KNN 的工作原理:给定一个已知类别标签的数据训练集,输入没有标签的新数据后,在训练数据集中找到与新数据最临近的 K 个实例。如果这 K 个实例的...
1、资源内容:《机器学习实战》- 约会网站数据的KNN分析-手写数字KNN分析-PLA算法决策树 朴素-贝叶斯-逻辑回归+源代码+文档说明 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程...
资源包括代码实现和课程报告--Bayes和KNN分类器实现鸢尾花数据集分类 源码实现包括手撕贝叶斯和KNN以及使用工具包实现 课程报告主要包括以下部分: 一、 问题描述 二、 数据预处理 (1)划分数据集 (2)数据可视化 ...
课程大作业-基于K-means聚类算法和KNN决策判别器的国家经济实力评价matlab源码+数据+报告.zip 第二章 基于K-means的分类统计 5 2.1 K-means介绍 5 2.2 K-means聚类在分类国家经济实力中的应用 7 第三章 基于KNN的...
数据挖掘所需代码,包括KNN算法,贝叶斯,模型评估
1.朴素贝叶斯分类算法 2.KNN分类算法 3.SVM分类算法 4.随机森林分类算法 5.神经网络分类算法 2.数据集 3.KNN图像分类 1.朴素贝叶斯分类算
为了简化系统模型训练方法,提高性别识别系统的整体效率,提出了一种基于改进Citation-KNN算法的说话人性别识别方法。该方法将连续语音切分,训练每段语音的高斯混合模型(Gaussian Mixture Model,GMM)作为多示例...
基于KNN 算法的分类器matlab实现,简单操作,可出图,可根据自身需求修改代码
01.人工智能实验-BP神经网络 02 人工智能实验--kmeans算法对图片的像素点进行聚类 03 人工智能实验--knn算法手写数字的笔迹识别 04 人工智能实验--基于物品的协同过滤...09 人工智能实验--基于贝叶斯算法对情感词分析
Matlab实现基于PSO-NN、SVM、KNN、DT的多特征数据分类预测,二分类及多分类(完整程序和数据) 基于PSO-NN、SVM、KNN、DT的多特征数据分类预测,二分类及多分类(Matlab完整程序和数据) 此代码获取用于分类的数据...
这是一个很简单的KNN算法,每个看看一下都学会,欢迎交流
基于PSO-NN、SVM、KNN、DT的多特征数据分类预测,二分类及多分类(Matlab完整程序和数据) 基于PSO-NN、SVM、KNN、DT的多特征数据分类预测,二分类及多分类(Matlab完整程序和数据) 此代码获取用于分类的数据输入。...
KNN 算法java实现 可以直接用哦
基于MATLAB的KNN算法实现多分类