转:http://blog.csdn.net/aidayei/article/details/6665530
运行官网上的mahout kmeas示例,结果文件夹有clusteredPoints,clusters-N,data,用命令mahout seqdumper仔细看了一下结果文件
clusteredPoints:存放的是最后聚类的结果,将cluster-id和documents-id都展示出来了,用mahout seqdumper读clusteredPoints结果的key-value类型是(IntWritable,WeightedVectorWritable)
clusters-N:是第N次聚类的结果,其中n为某类的样本数目,c为各类各属性的中心,r为各类属性的半径。 clusters-N结果类型是(Text,Cluster)
data:存放的是原始数据,这个文件夹下的文件可以用mahout vectordump来读取,原始数据是向量形式的,其它的都只能用mahout seqdumper来读取,向量文件也可以用mahout seqdumper来读取,只是用vectordump读取出来的是数字结果,没有对应的key,用seqdumper读出来的可以看到key,即对应的url,而value读出来的是一个类描述,而不是数组向量
为什么mahout seqdumper可以读任何SequenceFiles文件呢?看了一下源文件,是因为用的reader.getValueClass().newInstance()去读取的
clusters-0:读出来的结果(key,value)类型是(Text,Canopy),我猜应该是随机从原始数据里取出五个点来做初始聚类中心点,看到里面有RandomAccessSparseVector类,而后成的clusters-N读出来的(key,value)都是(Text,Cluster)类型,查了一下Canopy,说Canopy 聚类算法经常用于 K 均值聚类算法的预处理,用来找合适的 k 值和簇中心。
bin/mahout clusterdump --seqFileDir output/clusters-10 --pointsDir output/clusteredPoints --output /home/test/output
这个命令会将每一类的点列出来,seqFileDir指向的目录存放的是某类有几个点和该类的质心点及半径,即clusters-N目录,pointsDir指向的是所有输入点归于哪一类,即clusteredPoints目录,两者联合起来,就可以列举出属于同一类的所有点
注意seqFileDir指向的目录,要是最后一次迭代的结果目录,最后一次迭代的结果才是最终的结果
mahout Kmeans聚类有两个重要参数:收敛Delta和最大迭代次数.所以有时候改敛时,并还没有达到最大迭代次数
关于mahout命令的运行的几点说明
1.如果没设置HADOOP_HOME,mahout seqdumper的输入路径是本地的目录,而不是HDFS上的目录,如果要查看HDFS上的结果,需要先将文件从HDFS上拷下来,当设置了HADOOP_HOME后,用seqdumper去查看结果时,输入路径则是HDFS上的目录。
2.读写路径跟源文件中是不是用到hadoop的FileSystem类无关,前面一直理解错了,以为用到这个类,就认为一定是在HDFS上操作,自己写了一个简单的SequenceFile文件读写测试,发现刚开始run as->java application,读写操作是操作的本地目录,如果run as->run on hadoop,则读写操作就在HDFS上,将hadoop停掉后,此时在去run as->java application,一直会提示连接不到hdfs,难道一次操作在hdfs上后,后面不管是run as->java application,还是run as->run on hadoop,都必须是在hdsf上吗?有知道原因的大侠,还请赐教!hadoop在启动过后,需要等一段时间,因为还在安全模式下,此时不能在hdfs上创建文件
3.将(Text,ParseText)->(Text,Text),这样才能用seq2sparse将文本转成向量,如果不这样的话,必须自己将文本信息用tfidf算法转成对应的数组,然后再由
RandomAccessSparseVector类或DenseVector类包装成向量,因为现有的算法中,还没有直接处理文本的,全都要转成数字来度量特征,然后根据某种条件收敛,从这里也可以看出计算机对数学的依赖有多大了,自然语言是不好处理的。
分享到:
相关推荐
Mahout的核心是它的聚类、分类、推荐系统和频繁项挖掘等算法,其中Canopy和K-means是其在聚类分析中的两个重要组成部分。 ### Mahout Canopy Canopy聚类算法是一种预聚类技术,常被用作K-means或其它更复杂的聚类...
Mahout 聚类算法是数据挖掘和机器学习领域中的一种重要算法,它可以将相似的数据点聚集在一起,以便更好地理解和分析数据。Mahout 聚类算法可以分为多种类型,如 Canopy、KMeans、Fuzzy-KMeans、Spectral Clustering...
《深入理解Mahout中的KMeans聚类算法》 在数据挖掘和机器学习领域,聚类是一种常用的技术,用于发现数据集中的自然群体或类别。Apache Mahout作为一个强大的开源机器学习库,提供了多种聚类算法,其中KMeans是最为...
Mahout的目标是帮助开发人员构建智能应用程序,如推荐系统、分类和聚类算法,这些在大数据分析领域中极为重要。 **K-Means聚类算法** K-Means是一种无监督学习的聚类算法,用于将数据集分成不同的群组或类别。在...
mahout KMeansDriver测试相关jar包,有需要的同学可以下载来试试。把这个包放入hadoop/lib下面然后就可以在eclipse里面运行调试了。
在Java中,有多个库提供了KMeans的实现,例如Weka、ELKI、Apache Mahout和Smile等。这些库通常会提供一个jar包,供开发者在项目中引用。例如,如果压缩包文件名为"kemans",这可能是一个包含KMeans实现的库,或者是...
为了更详细地分析结果,可以使用 `clusterdump` 命令: ```bash # 输出详细结果 mahout clusterdump --input /user/root/output/clusters-10-final --pointsDir /user/root/output/clusteredPoints --output /usr/...
Mahout的kmeans聚类测试数据
kmeans聚类算法 基于划分的方法单机版基于学习
在Java中实现KMeans聚类,可以使用多种库,如Weka、Apache Mahout或自行编写代码。下面我们将深入探讨KMeans聚类的基本原理、Java实现的关键步骤以及如何进行测试和分析结果。 KMeans算法的核心思想是通过迭代过程...
- **Kmeans 算法概述**:Mahout 中 Kmeans 算法的基本原理及应用场景。 - **技术细节**: - Kmeans 算法的工作流程。 - 如何使用 Mahout 实现 Kmeans 算法。 - Kmeans 在推荐系统、聚类分析等领域的应用实例。 ...
在Java实现中,可以使用Apache Mahout、Weka等机器学习库,它们提供了现成的KMeans实现。如果从零开始编写,可以使用`ArrayList`或`HashSet`存储样本,`Matrix`库(如Apache Commons Math)处理向量计算,以及`...
在大数据分析的浪潮中,Mahout致力于提供工具,使得非专业数据科学家也能处理和理解大规模数据。这个版本主要涵盖了聚类、推荐系统(协同过滤)以及分类等核心的机器学习任务。 首先,让我们深入了解一下**KMeans...
其0.5版本的源代码压缩包“mahout-distribution-0.5-src.tar.gz”提供了丰富的数据挖掘功能,特别强调在Hadoop分布式计算环境中的应用,使得大规模的数据分析变得更为高效和便捷。 Apache Mahout的核心在于其提供的...
在Java环境中,我们可以使用开源库如Apache Mahout或自己编写代码实现KMeans算法。首先,构建TF-IDF矩阵,然后用Java编程实现KMeans算法的迭代过程。注意优化内存管理和并行计算以提高效率。 8. 整个工程运行 提供...
KMeans是一种常用的数据挖掘算法,...在实际项目中,可能会使用Apache Mahout、Weka或Spark MLlib等库来实现KMeans,因为它们提供了更高级的功能和优化。不过,自己动手实现KMeans有助于深入理解其工作原理和优化技巧。
Mahout 演示欢迎来到驯象师演示。 开发这个项目是为了展示 mahout 是如何工作的。... 模糊 KMeans 聚类使用 Maven 构建mvn 全新安装执行java -jar mahout-demo-0.0.1-SNAPSHOT-jar-with-dependencies.jar
在Java中,Apache Mahout库提供了KMeans的实现,也可以通过实现迭代过程和质心更新逻辑来自行编写。 3. 感知器算法: 感知器是最早的人工神经网络模型之一,主要用于二分类问题。它通过迭代更新权重来逐步优化决策...
大数据的挖掘是当今的研究热点,也有着巨大的商业价值。新型框架Spark部署在...该文研究了Spark中的机器学习中的聚类算法KMeans,先分析了算法思想,再通过实验分析其应用的方法,然后通过实验结果分析其应用场景和不足。