zoukankan      html  css  js  c++  java
  • Canopy聚类算法

    Canopy聚类算法(经典,看图就明白)

    聚类算法。

    这个算法获得的并不是最终结果,它是为其他算法服务的,比如k-means算法。它能有效地降低k-means算法中计算点之间距离的复杂度。

      图中有一个T1,一个T2,我们称之为距离阀值,显然T1>T2,这两个值有什么用呢?我们先确定了一个中心,然后计算其他点到这个中心间的距离,当距离大于T1时,小于T1大于T2时,小于T2时,对这个点的处理都是不一样的。

    算法伪代码:

    while D is not empty
          select element d from D to initialize canopy c
          remove d from D
          Loop through remaining elements in D
               if distance between d_i and c < T1 : add element to the canopy c
               if distance between d_i and c < T2 : remove element from D
          end
          add canopy c to the list of canopies C
    end

    D指代一组数据,d_i表示D中的各个数据。

    1:给我一组存放在数组里面的数据D

    2:给我两个距离阈值T1,T2,且T1>T2

    3:随机取D中的一个数据d作为中心,并将d从D中移除

    4:计算D中所有点到d的距离distance

    5:将所有distance<T1的点都归如到d为中心的canopy1类中(注意哦,小于T2的也是小于T1的,所以也是归入到canopy1中的哦)

    6:将所有distance<T2的点,都从D中移除。(这一步很关键的,你回去看上面那个图,就明白了)

    7:重复步骤4到6,直到D为空,形成多个canopy类

    关键点在于t1,t2:

    当与中心的距离大于T1时,这些点就不会被归入到中心所在的这个canopy类中。

    然当距离小于T1大于T2时,这些点会被归入到该中心所在的canopy中,但是它们并不会从D中被移除,也就是说,它们将会参与到下一轮的聚类过程中,成为新的canopy类的中心或者成员。亦即,两个Canopy类中有些成员是重叠的。

    而当距离小于T2的时候,这些点就会被归入到该中心的canopy类中,而且会从D中被移除,也就是不会参加下一次的聚类过程了。

  • 相关阅读:
    Struts2-1.配置&与第一个应用
    1.rs.first()、rs.last()、rs.next()、rs.getRow()
    网页跳转
    js---DOM元素节点
    4、BufferedIn(out)putStream--->字节输入/输出流的缓冲区类(高效类:高效率读写)
    3、FileInputStream--->类文件输入流(读取文件数据)
    2、FileOutputStream--->文件输出流(向文件写入数据)
    1、IO输入&输出流 简介
    OutOfMemoryError系列
    Spark调优,性能优化
  • 原文地址:https://www.cnblogs.com/34fj/p/8984122.html
Copyright © 2011-2022 走看看