`
run_xiao
  • 浏览: 194943 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

mahout之2-Kmeans聚类

阅读更多

2.Kmeans聚类
Kmeans算法思想也比较简单 :可见http://baike.baidu.com/view/3447609.htm
首先从n个数据对象选择 k 个对象作为初始聚类中心;
而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),
分别将它们分配给与其最相似的(聚类中心所代表的)聚类;
然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);
不断重复这一过程直到标准测度函数开始收敛为止。


mahout Kmeans聚类实现
(1)参数input指定待聚类的所有数据点,clusters指定初始聚类中心
如果指定参数k,由org.apache.mahout.clustering.kmeans.RandomSeedGenerator.buildRandom
通过org.apache.hadoop.fs直接从input指定文件中随机读取k个点放入clusters中

(2)根据原数据点和上一次迭代(或初始聚类)的聚类中心计算本次迭代
的聚类中心,输出到clusters-N目录下。
该过程由org.apache.mahout.clustering.kmeans下的
KMeansMapper\KMeansCombiner\KMeansReducer\KMeansDriver实现

KMeansMapper:在configure中初始化mapper时读入上一次迭代产生或初始聚类中心
(每个mapper都读入所有的聚类中心);
map方法对输入的每个点,计算距离其最近的类,并加入其中
输出key为该点所属聚类ID,value为KMeansInfo实例,包含点的个数和各分量的累加和

KMeansCombiner:本地累加KMeansMapper输出的同一聚类ID下的点个数和各分量的和

KMeansReducer:累加同一聚类ID下的点个数和各分量的和,求本次迭代的聚类中心;
并根据输入Delta判断该聚类是否已收敛:上一次迭代聚类中心与本次迭代聚类中心距离<Delta;
输出各聚类中心和其是否收敛标记

KMeansDriver:控制迭代过程直至超过最大迭代次数或所有聚类都已收敛
每轮迭代后,KMeansDriver读取其clusters-N目录下的所有聚类,若所有聚类已收敛
则整个Kmeans聚类过程收敛了。

 

参数调整

manhout Kmeans聚类有两个重要参数:收敛Delta和最大迭代次数

个人觉得Delta值越小,表示收敛条件越高,因此最终收敛的聚类数可能会降低,

而最大迭代次数可通过观察每次迭代后收敛聚类数决定,当收敛聚类数几乎不再变化或震荡时可停止迭代了

 

分享到:
评论

相关推荐

    mahout聚类算法

    Mahout 聚类算法可以分为多种类型,如 Canopy、KMeans、Fuzzy-KMeans、Spectral Clustering 等,每种算法都有其自己的特点和应用场景。 在 Mahout 聚类算法中,数据模型是数据的基本结构,它可以是 DenseVector、...

    kmeans聚类java实现附测试数据及结果

    在Java中实现KMeans聚类,可以使用多种库,如Weka、Apache Mahout或自行编写代码。下面我们将深入探讨KMeans聚类的基本原理、Java实现的关键步骤以及如何进行测试和分析结果。 KMeans算法的核心思想是通过迭代过程...

    mahout所需jar包

    2. **下载Mahout**:解压提供的`mahout-distribution-0.5`压缩包到本地目录。 3. **创建输入数据**:准备要进行聚类的数据,通常是以CSV或其他格式存储的数值向量。 4. **预处理数据**:如果需要,可以使用Mahout的...

    maven_mahout_template-mahout-0.6

    kmeans聚类算法 基于划分的方法单机版基于学习

    mahout-distribution-0.5-src.tar.gz )

    1. **聚类算法**:KMeans是Mahout中最常见的聚类算法之一。在Hadoop上运行KMeans,可以处理海量数据,对大量用户行为、网站访问记录或者地理定位数据进行分组,发现潜在的模式或群体。此外,Mahout还支持其他聚类...

    java 利用Kmeans的jar包进行聚类---代码

    这个标题"java 利用Kmeans的jar包进行聚类---代码"表明我们将探讨如何使用Java通过预编译的KMeans库(通常是一个jar包)来执行聚类任务。描述中的"java可以直接调用kmeans进行聚类!"进一步确认了Java程序员可以借助...

    coh-kmeans:用Java实现的半监督分层聚类算法

    K-means是最为知名的无监督聚类算法之一,而Coh-kmeans则是其半监督版本,结合了有监督和无监督的学习特性。本篇将深入探讨Coh-kmeans算法以及其Java实现。 ### 1. K-means算法简述 K-means算法基于中心点迭代更新...

    mahout canopy+kmeans测试数据

    Mahout的核心是它的聚类、分类、推荐系统和频繁项挖掘等算法,其中Canopy和K-means是其在聚类分析中的两个重要组成部分。 ### Mahout Canopy Canopy聚类算法是一种预聚类技术,常被用作K-means或其它更复杂的聚类...

    Kmeans文本聚类java实现

    在文件"**textcluster**"中,可能包含了实现这些功能的Java代码,如文本预处理类、KMeans聚类类、数据读取和输出功能等。具体实现细节,例如如何处理稀疏矩阵、如何优化距离计算等,可以通过阅读源代码来了解。 总...

    mahout-demo:mahout 演示展示了它是如何工作的

    Mahout 演示欢迎来到驯象师演示。... 模糊 KMeans 聚类-. 冠层聚类(文档聚类) -. K均值聚类-. 模糊 KMeans 聚类使用 Maven 构建mvn 全新安装执行java -jar mahout-demo-0.0.1-SNAPSHOT-jar-with-dependencies.jar

    mahout0.9测试详细傻瓜说明

    以上步骤详细介绍了如何在 Mahout 0.9 中运行 KMeans 算法进行数据聚类。请注意,实际操作时可能需要根据你的具体环境配置和数据集调整相关参数,例如 KMeans 中的迭代次数、初始中心点选择策略等。此外,理解 ...

    mahout学习

    《深入理解Mahout中的KMeans聚类算法》 在数据挖掘和机器学习领域,聚类是一种常用的技术,用于发现数据集中的自然群体或类别。Apache Mahout作为一个强大的开源机器学习库,提供了多种聚类算法,其中KMeans是最为...

    mapreduce-kmeans:使用MapReduce的朴素K均值聚类

    mapreduce-kmeans 代码。 请注意,这只是一个示例,而不是可用于生产的代码。 如果您要进行正式生产和正常工作的群集,请使用Mahout,Hama或Spark。 建造 您将需要Java 8来构建该库。 您可以简单地使用以下命令...

    kmeans算法文本聚类java源码(分词,TF/IDF等)

    在Java环境中,我们可以使用开源库如Apache Mahout或自己编写代码实现KMeans算法。首先,构建TF-IDF矩阵,然后用Java编程实现KMeans算法的迭代过程。注意优化内存管理和并行计算以提高效率。 8. 整个工程运行 提供...

    synthetic_control.data

    Mahout的kmeans聚类测试数据

    mahout 0.4版本

    总结来说,Apache Mahout 0.4版本是一个强大的工具,为开发者和数据分析师提供了实现机器学习任务的高效途径,特别是KMeans聚类、FPM挖掘和协同过滤。通过这个开源项目,即使是对机器学习不熟悉的用户也能处理大数据...

    大数据技术 Hadoop开发者第二期 MapReduce HDFS Hive Mahout HBase 共64页.pdf

    - Kmeans 在推荐系统、聚类分析等领域的应用实例。 综上所述,这份资料涵盖了 Hadoop 相关技术的多个方面,包括分布式搜索引擎构建、数据处理、数据存储以及机器学习算法等。对于希望深入了解 Hadoop 生态系统的...

    聚类分析 (4).pdf

    Apache Mahout是一个开源机器学习库,它提供了包括聚类分析在内的多种算法实现,支持Hadoop,使得大规模数据的聚类处理变得可能。通过Mahout,开发者可以轻松地实现各种聚类任务,探索和理解大数据集中的隐藏模式。 ...

    Kmeans数据挖掘算法的实现(Java)

    KMeans是一种常用的数据挖掘算法,...在实际项目中,可能会使用Apache Mahout、Weka或Spark MLlib等库来实现KMeans,因为它们提供了更高级的功能和优化。不过,自己动手实现KMeans有助于深入理解其工作原理和优化技巧。

Global site tag (gtag.js) - Google Analytics