层次聚类

原文地址http://blog.sina.com.cn/s/blog_62186b460101ard2.html

这里只是将比较重要的部分转一下

另外还有一篇关于层次聚类的 http://blog.csdn.net/jwh_bupt/article/details/7685809

聚类分析就仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组(簇)。其目标是,组内的对象相互之间是相似的,而不同组中的对象是不同的。组内相似性越大,组间差别越大,聚类就越好。

先介绍下聚类的不同类型,通常有以下几种:

(1)层次的与划分的:如果允许簇具有子簇,则我们得到一个层次聚类。层次聚类是嵌套簇的集族,组织成一棵树。划分聚类简单地将数据对象划分成不重叠的子集(),使得每个数据对象恰在一个子集中。

(2)互斥的、重叠的与模糊的:互斥的指每个对象都指派到单个簇。重叠的或是模糊聚类用来反映一个对象同时属于多个组的事实。在模糊聚类中,每个数据对象以一个01之间的隶属权值属于每个簇。每个对象与各个簇的隶属权值之和往往是1。

(3)完全的与部分的:完全聚类将每个对象指派到一个簇中。部分聚类中,某些对象可能不属于任何组,比如一些噪音对象。

...

基本K均值

根据该算法,实现如下代码:

    https://github.com/intergret/snippet/blob/master/Kmeans.py

    或是 http://www.oschina.net/code/snippet_176897_14731

凝聚层次聚类

根据该算法,实现如下代码。开始时计算每个点对的距离,并按距离降序依次合并。另外为了防止过度合并,定义的退出条件是90%的簇被合并,即当前簇数是初始簇数的10%:

    https://github.com/intergret/snippet/blob/master/HAC.py

    或是 http://www.oschina.net/code/snippet_176897_14732

 DBSCAN

根据该算法,实现如下代码:

    https://github.com/intergret/snippet/blob/master/Dbscan.py

    或是 http://www.oschina.net/code/snippet_176897_14734    

 算法实现

http://www.blogjava.net/changedi/archive/2010/03/19/315963.html

 

你可能感兴趣的:(聚类)