`
thd52java
  • 浏览: 72095 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mahout系列之------Canopy算法

阅读更多

Canopy 算法,流程简单,容易实现,一下是算法

(1)设样本集合为S,确定两个阈值t1和t2,且t1>t2。

(2)任取一个样本点p属于S,作为一个Canopy,记为C,从S中移除p。

(3)计算S中所有点到p的距离dist

(4)若dist<t1,则将相应点归到C,作为弱关联。

(5)若dist<t2,则将相应点移出S,作为强关联。

(6)重复(2)~(5),直至S为空。

上面的过程可以看出,dist<t2的点属于有且仅有一个簇,t2<dist<t1 的点可能属于多个簇。可见Canopy是一种软聚类。

     Canopy有消除孤立点的作用,而K-means在这方面却无能为力。建立canopies之后,可以删除那些包含数据点数目较少的canopy,往往这些canopy是包含孤立点的。根据canopy内点的数目,来决定聚类中心数目k,这样效果比较好。

 

 

Canopy 聚类结果如下图:

image

Mahout canopy 聚类流程如下:

(1)将文本向量化。

   在文档向量化之前,需要将出于一个目录中的文档序列化,所谓序列化就是将文档内容写成SequenceFile 格式,key:文档标题 ,value:文档内容。

    该过程将文本分词,计算ngram ,特征抽取,生成字典,计算特征权重生成文档词矩阵。

  值得说明的是该过程可以由其他的方法替代,不仅限于用Mahout ,只要能生成向量即可。

(2)用Canopy 聚类。

   参数:

       距离度量 :cos距离(常用于文本距离度量)

       T1:0.5左右

       T2:0.25 左右

       输入:向量化生成的sequencefile

    当T1过大时,会使许多点属于多个Canopy,可能会造成各个簇的中心点间距离较近,各簇
间区别不明显;
当T2过大时,增加强标记数据点的数量,会减少簇个个数;T2过小,会增加簇的个数,同时
增加计算时间

 (3)结果。

     ../clusteredPoints           最终结果,类标志 向量
    .. /clusters-0                    簇中心
   

    ClusteredPoints 数据如下:

   Key: 4: Value: 1.0: [1.000, -0.213, -0.956, -0.003, 0.056, 0.091, 0.017, -0.024, 1.000]
   Key: 3: Value: 1.0: [0:1.000, 1:3.147, 2:2.129, 3:-0.006, 4:-0.056, 5:-0.063, 6:-0.002, 7:0.109]
   Key: 0: Value: 1.0: [1.000, -2.165, -2.718, -0.008, 0.043, -0.103, -0.156, -0.024, 1.000]
   Key: 0: Value: 1.0: [1.000, -4.337, -2.686, -0.012, 0.122, 0.082, -0.021, -0.042, 1.000]

   

   clusters-0 数据如下:

   Key: C-0: Value: C-0: {8:0.9903846153846154,7:0.03641560060121199,6:-0.011104891601517057,5:-0.018746460252920098,4:0.0018451485029808527,3:0.02659166333809029,2:-2.0914853859015725,1:-2.2735344078494943,0:1.0}
Key: C-1: Value: C-1: {8:0.005681818181818182,7:-0.005705937927015517,6:0.018373023001902314,5:-0.02408518413578759,4:-0.0649238556654074,3:-0.003042417008279087,2:2.5123232537912283,1:2.0664589339683306,0:1.0}
Key: C-2: Value: C-2: {8:0.006493506493506494,7:-0.01019964334516059,6:0.023497740573602648,5:-0.03181163901232867,4:-0.05941297790332273,3:-0.017834190866604666,2:2.382976575761404,1:2.1735244959638065,0:1.0}
Key: C-3: Value: C-3: {8:0.007575757575757576,7:-0.011551099054202508,6:0.023459485214657627,5:-0.02978024551438345,4:-0.05926968634175531,3:-0.016503525708008473,2:2.2626847929337592,1:2.1570361543820167,0:1.0}
Key: C-4: Value: C-4: {8:0.9230769230769231,7:0.04076923076923077,6:-0.011730769230769232,5:-0.019307692307692307,4:0.024653846153846155,3:0.01373076923076923


分享到:
评论

相关推荐

    mahout-distribution-0.9.tar.gz

    3. **聚类**:包括K-Means、Fuzzy K-Means、Canopy Clustering、DBSCAN等算法,可用于将相似的数据点分组到一起,常用于市场细分、用户分群等场景。 4. **频繁项集挖掘**:通过Apriori、FP-Growth等算法发现数据...

    mahout-distribution-0.8-src

    2. **聚类(Clustering)**:包括K-means、Fuzzy K-means、Canopy Clustering等算法,用于将数据集中的对象分组到相似的类别中。这些算法广泛应用于市场细分、文本分类和图像分析等领域。 3. **分类...

    mahout-distribution-0.9含jar包

    Apache Mahout是一个基于Java的开源机器学习库,它为大数据处理提供了丰富的算法,主要用于推荐系统、分类和聚类。"mahout-distribution-0.9含jar包" 是一个包含了Mahout项目0.9版本的预编译二进制文件集合,其中不...

    mahout-distribution-0.7-src.zip

    该库由Java编写,并采用Maven作为构建工具,提供了一系列用于构建智能应用的高效算法。本文将深入探讨Mahout 0.7版本的源码结构、核心功能及其实现方式。 一、源码结构分析 Mahout 0.7源码包含了多个模块,如`...

    mahout-distribution-0.5.tar.gz + 源码

    6. **集成Hadoop**:Mahout的大部分算法都设计为可运行在Hadoop MapReduce之上,以处理海量数据。 7. **Spark支持**:尽管0.5版本不包含对Apache Spark的支持,但后来的版本开始集成Spark,提供更快的交互式和流式...

    Mahout-0.9-jar包

    ”这表明提供的压缩包可能包含了一系列的jar文件,这些文件是Mahout 0.9版的二进制发行版,可以直接添加到Java项目中,无需进行编译。开发者可以通过将这些jar文件添加到项目的类路径(classpath)来利用Mahout的...

    apache-mahout-distribution-0.10.2

    Apache Mahout是一个基于Java的开源机器学习库,它为大数据处理提供了丰富的算法集。这个"apache-mahout-distribution-0.10.2"压缩包包含的是Mahout的0.10.2版本,该版本是2014年发布的一个稳定版本,旨在帮助大数据...

    mahout canopy算法仿造代码源码

    Apache Mahout 是一个开源机器学习库,它提供了一系列的算法,用于实现数据挖掘中的聚类、分类和推荐系统。Canopy 算法是 Mahout 中的一种快速聚类方法,适用于大数据集。Canopy 算法是为了解决层次聚类(如 K-Means...

    mahout canopy+kmeans测试数据

    Canopy算法通过定义两个阈值T1和T2(T1&gt;T2)来快速将数据分组,其中T1用于创建canopy,而T2用于确定哪些数据点可以被视为同一个canopy的一部分。这个过程可以极大地减少K-means算法在计算距离时所需的比较次数,从而...

    mahout-0.3.tar

    Apache Mahout是一个基于Java的开源机器学习库,它为大数据处理提供了丰富的算法和工具,用于实现推荐系统、分类和聚类。"mahout-0.3.tar"是Mahout项目在0.3版本的源码或二进制发行版的压缩文件,通常包含了项目的源...

    mahout 0.5

    Mahout 0.5中的聚类算法包括K-Means、Fuzzy K-Means、Canopy Clustering等。这些算法用于发现数据集中的自然群体或模式,如在用户行为分析、市场细分等领域。 **5. 数学与统计工具:** Mahout提供了基础的数学和...

    mahout聚类算法

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

    mahout canopy 仿造代码

    仿造mahout 的canopy算法编写的canopy算法,只是把其中的输入数据文件的格式改为了text类型,且加入了log信息,方便用户测试算法;

    mahout-0.3.zip

    1. **聚类**:Mahout提供了多种聚类算法,如K-means,Fuzzy K-means,和Canopy Clustering等。这些算法用于将数据集中的对象分成不同的组或簇,使得同一簇内的对象相似度较高,而不同簇之间的对象相似度较低。这对于...

    mahout-0.9 jar包

    在标题中提到的“mahout-0.9 jar包”是Mahout项目的一个特定版本,即0.9版本的集合,包含了一系列jar文件,这些文件是运行和开发Mahout相关应用的基础。 Mahout 0.9版本包含了多个模块,如分布式推荐系统、分类、...

    apache-mahout-trunk_java_物联_源码.zip

    Apache Mahout起源于2008年,由Apache Software Foundation发起,旨在提供可扩展的、用户友好的机器学习算法实现,支持大数据平台如Hadoop。它的核心目标是让数据科学家和开发者能够轻松地构建推荐系统、分类和聚类...

    Mahout In Action英文完整版

    1. **推荐系统**:Mahout提供了一系列推荐算法,如基于用户的协同过滤(User-Based Collaborative Filtering)、基于物品的协同过滤(Item-Based Collaborative Filtering)等。这些算法能够根据用户的历史行为数据预测...

    Mahout算法解析与案例实战_PDF电子书下载 带书签目录 完整版

    此外,Mahout还支持Canopy聚类等高效算法,能够处理非常大的数据集。 #### 分类算法 在分类任务中,Mahout提供了朴素贝叶斯分类器、随机森林和支持向量机等多种算法。例如,朴素贝叶斯分类器基于概率论原理,通过...

Global site tag (gtag.js) - Google Analytics