Hierarchical Clustering(层次聚类)
来源:互联网 发布:淘宝发论文被骗 编辑:程序博客网 时间:2024/06/06 00:47
层次聚类原理:
唔?排序的图?分治?没错,与原型聚类和密度聚类不同,层次聚类试图在不同的“层次”上对样本数据集进行划分,一层一层地进行聚类。就划分策略可分为自底向上的凝聚方法(agglomerative hierarchical clustering),比如AGNES。自上向下的分裂方法(divisive hierarchical clustering),比如DIANA。
AGNES先将所有样本的每个点都看成一个簇,然后找出距离最小的两个簇进行合并,不断重复到预期簇或者其他终止条件。
DIANA先将所有样本当作一整个簇,然后找出簇中距离最远的两个簇进行分裂,不断重复到预期簇或者其他终止条件。
如何判断两个cluster之间的距离呢?
1.最小距离,单链接Single Linkage
两个簇的最近样本决定。
2.最大距离,全链接Complete Linkage
两个簇的最远样本决定。
3.平均距离,均链接Average Linkage
两个簇所有样本共同决定。
1和2都容易受极端值的影响,而3这种方法计算量比较大,不过这种度量方法更合理。
和决策树相似,层次聚类的优点在于能一次性得到整棵树,同控制某些条件不管是深度还是宽度都是可控的,但是它存在不少的问题:
计算量
划分确定不可再作更改
凝聚和划分相互组合!!
每次选择“最优”
贪心算法,容易局部最优化,可以通过适当的随机操作。
或者是采用平衡迭代规约和聚类(Balanced Iterative Reducing and Clustering Using Hierarchies,BIRCH)它首先把邻近样本点划分到微簇(microcluseters)中,然后对这些微簇使用K-means算法。
HC应用:
AgglomerativeClustering参数说明:
AgglomerativeClustering(affinity=’euclidean’, compute_full_tree=’auto’,connectivity=None, linkage=’ward’,memory=Memory(cachedir=None), n_clusters=6,pooling_func=)
affinity='euclidean':距离度量方式connectivity:是否有连通性约束linkage='ward':链接方式memory:存储方式n_clusters=6:簇类数
import numpy as npimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3d.axes3d as p3from sklearn.cluster import AgglomerativeClusteringfrom sklearn.datasets.samples_generator import make_swiss_rolln_samples = 1500noise = 0.05X, _ = make_swiss_roll(n_samples, noise)#卷型数据集#进行放缩X[:, 1] *= .5ward = AgglomerativeClustering(n_clusters=6, linkage='ward').fit(X)label = ward.labels_#得到lable值fig = plt.figure()ax = p3.Axes3D(fig)ax.view_init(7, -80)for l in np.unique(label): ax.scatter(X[label == l, 0], X[label == l, 1], X[label == l, 2], color=plt.cm.jet(np.float(l) / np.max(label + 1)), s=20, edgecolor='k')plt.show()
可见没有连接性约束的忽视其数据本身的结构,于是形成了跨越流形的不同褶皱。
from sklearn.neighbors import kneighbors_graphconnectivity = kneighbors_graph(X, n_neighbors=10, include_self=False)ward = AgglomerativeClustering(n_clusters=6, connectivity=connectivity, linkage='ward').fit(X)
修改部分代码后,添加connectivity便可以得到很好的结果。
- 层次聚类方法(Hierarchical Clustering)
- Hierarchical Clustering(层次聚类)
- 层次聚类 Hierarchical Clustering
- Hierarchical Clustering 层次聚类
- 聚类系列-层次聚类(Hierarchical Clustering)
- 聚类——层次聚类(Hierarchical Clustering)
- 层次聚类 Hierarchical Clustering Algorithms
- Python-层次聚类-Hierarchical clustering
- 8.3 聚类(Clustering) hierarchical clustering 层次聚类
- 8.4 聚类(Clustering) hierarchical clustering 层次聚类应用
- 聚类(2)——层次聚类 Hierarchical Clustering
- 聚类——层次聚类 Hierarchical Clustering
- 层次聚类的具体实现 Hierarchical clustering implementation
- 聚类(2)——层次聚类 Hierarchical Clustering
- 聚类——层次聚类Hierarchical Clustering
- 聚类(2)——层次聚类 Hierarchical Clustering
- 聚类(2)——层次聚类 Hierarchical Clustering
- 聚类(2)——层次聚类 Hierarchical Clustering
- Liunx第二章课后习题(问答题)
- MYSQL练习-3(from--内连接笛卡尔积)
- [论文解读] ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
- 我竟然被抓去做了比特币挖矿工
- 集群、分布式、负载均衡区别与联系
- Hierarchical Clustering(层次聚类)
- apache 访问日志access_log 配置和解析 rotatelogs分割日志
- WebStorm安装教程和激活方式
- 第五周——项目二—建立链栈算法库
- apache 负载均衡
- 初学Spring有没有适合的书?
- css实现背景透明文字不透明
- redise数据结构之之字符串和链表
- UnityShader初级篇——实现逐像素漫反射光照模型