本文接数据挖掘-基于贝叶斯算法及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算法,可以有效地对newsgroup18828文档集进行分类,从而实现信息的有效组织和检索。这些算法在互联网环境中尤其重要,因为它们可以帮助处理海量的非结构化数据,如电子邮件、社交媒体帖子和新闻...
数据挖掘是一种从大量数据中提取有用信息的过程,而贝叶斯算法和KNN算法是两种常用的数据挖掘技术,尤其在文本分类领域。这两种算法在处理非结构化数据,如文档分类时,有着显著的效果。 贝叶斯算法是基于概率论的...
基于贝叶斯及KNN算法的newsgroup文本分类器,eclipse工程 程序运行方法:用eclipse打开工程,并将newsgroup文档集解压到 F:\DataMiningSample\orginSample目录下,同时在F:\DataMiningSample\ 下建好如附件“F盘...
基于贝叶斯及KNN算法的newsgroup文本分类器,eclipse工程,免积分下载版 程序运行方法:用eclipse打开工程,并将newsgroup文档集解压到 F:\DataMiningSample\orginSample目录下,同时在F:\DataMiningSample\ 下建...
在Java中实现基于贝叶斯算法和KNN算法的文本分类器,主要涉及以下知识点: 1. **文本预处理**:文本预处理是文本分类的第一步,也是至关重要的一步。预处理的目的是为了将原始文本转换成可供算法处理的格式,主要...
课程作业-基于KNN算法实现红酒分类实验源码+详细注释+数据集.zip课程作业-基于KNN算法实现红酒分类实验源码+详细注释+数据集.zip课程作业-基于KNN算法实现红酒分类实验源码+详细注释+数据集.zip课程作业-基于KNN算法...
K-近邻算法,又称为 KNN 算法,是数据挖掘技术中原理最简单的算法。 KNN 的工作原理:给定一个已知类别标签的数据训练集,输入没有标签的新数据后,在训练数据集中找到与新数据最临近的 K 个实例。如果这 K 个实例的...
本资源包主要关注两种常见的分类算法:贝叶斯算法和KNN(K-近邻)分类器。这两种方法在实际应用中都有广泛的应用,特别是在预测、推荐系统、垃圾邮件过滤等领域。 **1. 贝叶斯算法** 贝叶斯算法是基于概率论的统计...
1、资源内容:《机器学习实战》- 约会网站数据的KNN分析-手写数字KNN分析-PLA算法决策树 朴素-贝叶斯-逻辑回归+源代码+文档说明 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程...
资源包括代码实现和课程报告--Bayes和KNN分类器实现鸢尾花数据集分类 源码实现包括手撕贝叶斯和KNN以及使用工具包实现 课程报告主要包括以下部分: 一、 问题描述 二、 数据预处理 (1)划分数据集 (2)数据可视化 ...
_KNN算法实现鸢尾花数据集分类_C语言实现_IrisClassification-KNNAlgorithm.zip _KNN算法实现鸢尾花数据集分类_C语言实现_IrisClassification-KNNAlgorithm.zip _KNN算法实现鸢尾花数据集分类_C语言实现_...
课程大作业-基于K-means聚类算法和KNN决策判别器的国家经济实力评价matlab源码+数据+报告.zip 第二章 基于K-means的分类统计 5 2.1 K-means介绍 5 2.2 K-means聚类在分类国家经济实力中的应用 7 第三章 基于KNN的...
在提供的压缩包文件中,"KNN算法及Java实现.pdf"很可能是包含KNN算法详细介绍以及如何在Java中实现它的文档。这份文档可能涵盖了以下几个方面: 1. **KNN算法原理**:解释了KNN的基本概念,包括K值的选择、距离度量...
1. **朴素贝叶斯分类算法**:朴素贝叶斯算法基于贝叶斯定理,假设特征之间相互独立。在图像分类中,它可以用于基于像素特征或预处理后的特征向量进行分类。尽管“朴素”假设在实际应用中可能过于简化,但在许多情况...
【标题】"java-knn-2.rar_Knn-java_knn" 涉及的主要知识点是K-近邻算法(K-Nearest Neighbors, KNN)在Java中的实现。KNN是一种非参数监督学习方法,常用于分类和回归任务。在机器学习领域,它是一种基础且直观的...
为了简化系统模型训练方法,提高性别识别系统的整体效率,提出了一种基于改进Citation-KNN算法的说话人性别识别方法。该方法将连续语音切分,训练每段语音的高斯混合模型(Gaussian Mixture Model,GMM)作为多示例...
本资源包提供了一次全面的数据挖掘实践,重点涵盖了Python编程语言中的四种经典机器学习算法:K-最近邻(KNN)、朴素贝叶斯(Naive Bayes)、支持向量机(SVM)以及决策树。下面我们将详细讨论这些算法及其在图片...
Java实现k近邻(kNN)算法是机器学习领域中一种基础且重要的算法,主要用于分类和回归问题。kNN算法基于实例的学习,它不预先建立任何模型,而是将新数据分类或预测为与其最近的k个训练样本中最常见的类别。在这个讨论...