实战Mahout聚类算法Canopy+K-means
Mahout是Apache的顶级开源项目,它由Lucene衍生而来,且基于Hadoop的,对处理大规模数据的机器学习的经典算法提供了高效的实现。其中,对经典的聚类算法即提供了单机实现,同时也提供了基于hadoop分布式的实现,都是非常好的学习资料。 聚类分析 聚类(Clustering)可以简单的理解为将数据对象分为多个 簇(Cluster),每个 簇 里的所有数据对象具有一定的相似性,这样一个 簇可以看多一个整体对待,以此可以提高计算质量或减少计算量。而数据对象间相似性的衡量有不少经典算法可以用,但它们所需的数据结构基本一致,那就是向量;常见的有 欧几里得距离算法、余弦距离算法、皮尔逊相关系数算法等,Mahout对此都提供了实现,并且你可以在实现自己的聚类时,通过接口切换不同的距离算法。 数据模型 在Mahout的聚类分析的计算过程中,数据对象会转化成向量( Vector )参与运算,在Mahout中的接口是 org.apache.mahout.math.Vector 它里面每个域用一个浮点数( double )表示,你可以通过继承Mahout里的基类如: AbstractVector来实现自己的向量模型,也可以直接使用一些它提供的已有实现如下: 1. DenseVector,它的实现就是一个浮点数数组,对向量里所有域都进行存储,适合用于存储密集向量。 2.