层次聚类算法的python实现

原创 2015年07月10日 10:35:26

文章给出层次聚类算法的python实现方法,并用《数据挖掘导论》里面的具体数据进行运行,代码如下:

from numpy import *
from math import *
from operator import *
def dist(a,b):#a,b is mat
    c=(a-b)*(a-b).T
    return sqrt(sum(c))
    
def centroid(a): #a is mat
    return a.mean(0)

def resolveList(List):#分解一个List,如将[[1,2],[[1,2],[1,2]]]分解为[[1,2],[1,2],[1,2]]
    L=[]
    for i in range(len(List)):
        if type(List[i][0])!=list:
            L.append(List[i])
            continue
        else:
            List1=resolveList(List[i])
            for j in List1:
                L.append(j)
    return L


def cluster(data,num): #data is list   num is the number of clusters you want
    dataList=data
    clusterList=range(len(dataList))
    while len(dataList)>num:
        dataMat=map(mat,data)
        distDic={}
        for i in range(len(dataMat)-1):
            for j in range(len(dataMat))[i+1:]:
                distDic[(i,j)]=dist(dataMat[i].mean(0),dataMat[j].mean(0))
        m,n=sorted(distDic.items(),key=itemgetter(1))[0][0]
        tempList=[]
        tempList.append(dataList[m])
        tempList.append(dataList[n])
        L=resolveList(tempList)
        del dataList[n]
        del dataList[m]
        dataList.append(L)
        print dataList  #打出每一次结果

data=[[0.4005,0.5306],[0.2148,0.3854],[0.3457,0.3156],[0.2652,0.1875],[0.0789,0.4139],[0.4548,0.3022]]
cluster(data,2)
结果如下:

[[0.4005, 0.5306], [0.2148, 0.3854], [0.2652, 0.1875], [0.0789, 0.4139], [[0.3457, 0.3156], [0.4548, 0.3022]]]
[[0.4005, 0.5306], [0.2652, 0.1875], [[0.3457, 0.3156], [0.4548, 0.3022]], [[0.2148, 0.3854], [0.0789, 0.4139]]]
[[0.4005, 0.5306], [[0.2148, 0.3854], [0.0789, 0.4139]], [[0.2652, 0.1875], [0.3457, 0.3156], [0.4548, 0.3022]]]
[[0.4005, 0.5306], [[0.2148, 0.3854], [0.0789, 0.4139], [0.2652, 0.1875], [0.3457, 0.3156], [0.4548, 0.3022]]]
程序可能编写的很菜,如有错误,希望指正~


【JAVA实现】层次聚类算法

聚类算法属于机器学习中一种无监督学习算法。聚类方法一般可以分为层次聚类与非层次聚类两种。其中层次聚类算法又可以分为合并法与分解法;同样非层次聚类算法也可以分为多种,常用的有K-means算法。这篇博客...
  • C_son
  • C_son
  • 2015年02月21日 22:39
  • 3320

【通俗易懂】层次聚类算法的原理及实现

层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚...

层次聚类算法的原理及实现Hierarchical Clustering

Read more: http://bluewhale.cc/2016-04-19/hierarchical-clusteri 层次聚类(Hierarchical Clusterin...

聚类算法之层次聚类(Java实现)

聚类算法之层次聚类(Java实现)  资源出处:    http://www.cnblogs.com/emanlee/archive/2012/02/28/2371273.html    ...

层次聚类算法之single-linkage和complete-linkage(C语言实现)

层次聚类试图在不同层次上对数据集合进行划分, 从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略,也可以采用“自顶向下”的分拆策略。 AGNES是一种采用自底向上的聚合策略的层次聚合算法...

层次聚类算法的原理及实现Hierarchical Clustering

层次聚类(HIERARCHICAL CLUSTERING)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚...

层次聚类算法

  • 2015年04月20日 09:32
  • 359KB
  • 下载

层次聚类算法C++

  • 2016年06月22日 11:33
  • 974KB
  • 下载

层次聚类算法

一、算法介绍 将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,类中的对象彼此间相似度大,而类与类之间的相似度小。 聚类分析又称群分析,它...

数据挖掘层次聚类算法

  • 2010年01月14日 15:07
  • 3.52MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:层次聚类算法的python实现
举报原因:
原因补充:

(最多只允许输入30个字)