龙空技术网

文本聚类分析(二)-python

统计小宋 314

前言:

而今你们对“层次聚类算法python”大约比较着重,同学们都想要学习一些“层次聚类算法python”的相关知识。那么小编也在网络上汇集了一些有关“层次聚类算法python””的相关内容,希望大家能喜欢,小伙伴们快快来学习一下吧!

2 近邻传播聚类

基本思想:将全部数据点都当作潜在的聚类中心(称之为exemplar),然后数据点两两之间连线构成一个网络(相似度矩阵),再通过网络中各条边的消息(吸引度responsibility和归属度availability)传递计算出各样本的聚类中心。R (i, k)+A (i, k)越大,则k点作为聚类中心的可能性就越大,并且i点隶属于以k点为聚类中心的聚类的可能性也越大。

2 近邻传播聚类

优点:1.不需要指定最终聚类的个数;2.已有的数据点作为最终的聚类中心,而不是新生成一个类质心;3.对数据的初始值不敏感;4.对初始相似度矩阵数据的对称性没有要求;5.与k-中心点聚类方法相比,结果的平方差误差较小。

缺点:1.AP算法需要事先计算每对数据对象之间的相似度,对内存要求高;2.AP算法的时间复杂度高,聚类的好坏受到阻尼系数的影响

实现(python)

AffinityPropagation()中的主要参数:1. damping : 阻尼系数,默认为0.5,取值[0.5,1);2. convergence_iter :比较多少次聚类中心不变之后停止迭代,默认15;3. max_iter :最大迭代次数,默认为200。

主要属性:1. cluster_centers_indices_ : 存放聚类中心的数组;2. labels_ :存放每个点的分类的数组;3. n_iter_ : 迭代次数;主要方法同k-means()

3 层次聚类

基本思想:先计算样本之间的距离。每次将距离最近的点合并到同一个类。然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。不停地合并,直到合成了一个类。其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等。比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离。层次聚类算法根据层次分解的顺序分为:自下底向上的凝聚层次聚类算法和自上向下的分裂层次聚类算法

实现(python)

基于sklearn的实现聚类结果的解释:

1.X一共有5个样本,那么在进行层次聚类是,这5个样本各自一类,类别名称是0、1、2、3、4

2.第一行:[0, 3]意思是类别0和类别3距离最近,首先聚成一类,并自动定义类别为5(=len(X)-1+1)

3.第二行:[4, 5]意思是类别4和上面聚类的新类别5距离为第二近,4、5聚成一类,类别为6(=len(X)-1+2)

4.第三行:[1, 2]意思是类别1、类别2距离为第三近,聚成一类,类别为7(=len(X)-1+3)

5.第四行:[6, 7]意思是类别6、7距离为第四近,聚成一类,类别为8(=len(X)-1+4)

6.因为类别5有两个样本,加上类别4形成类别6,有3个样本;

7.类别7是类别1、2聚类形成,有两个样本;

8.类别6、7聚成一类后,类别8有5个样本,这样X全部样本参与聚类,聚类完成。

基于scipy的实现:

method是指计算类间距离的方法,比较常用的有3种: (1)single:最近邻 ,(2)complete:最远邻, (3)average:平均距离,其他的method还有如weighted,centroid等

4基于密度的聚类DBSCAN

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类算法,它是一种基于高密度连通区域的、基于密度的聚类算法,能够将具有足够高密度的区域划分为簇,并在具有噪声的数据中发现任意形状的簇。聚类的时候不需要预先指定簇的个数,最终的簇的个数不定

DBSCAN算法需要用户输入2个参数:一个参数是半径(Eps),表示以给定点P为中心的圆形邻域的范围;另一个参数是以点P为中心的邻域内最少点的数量(MinPts)。如果满足:以点P为中心、半径为Eps的邻域内的点的个数不少于MinPts,则称点P为核心点。

实现(以k-均值聚类为例):

这里的输出结果为数据x中所有对象s(i)值的平均数。解读方式与前面相同。

标签: #层次聚类算法python