【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering
文章目录
- 基本原理
- 绘图层次
- 定义距离
基本原理
和Birch聚类相似,层次聚类也是一种依赖树结构实现的聚类方法,其核心概念是相似度。根据相似度,可以将所有样本组织起来,从而构建一棵层次聚类树。
其中Birch算法的核心,叫做聚类特征树(Clustering Feature Tree),简称CF树。CF树由CF构成,每个CF都是三元组,表示为(N, LS, SS),其中N表示点数;LS表示点的向量和;SS表示CF各分量的平方和。
相比之下,层次聚类更加直接,为了说明层次聚类的特点,可以尝试绘制一下分层聚类树,其中绘图函数使用scipy
中的dendrogram
函数,其参数生成函数定义如下(可以不用管这个)
import numpy as np
from matplotlib import pyplot as plt
from scipy.cluster.hierarchy import dendrogram
def getLinkageMat(model):children = model.children_cs = np.zeros(len(children))N = len(model.labels_)for i,child in enumerate(children):count = 0for idx in child:count += 1 if idx < N else cs[idx - N]cs[i] = countreturn np.column_stack([children, model.distances_, cs])
然后对AgglomerativeClustering
算法进行测试
from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=50)
model = AgglomerativeClustering(distance_threshold=0, n_clusters=None)model = model.fit(X)
mat = getLinkageMat(model)
test = dendrogram(mat)
plt.show()
其中,distance_threshold
表示距离阈值,n_clusters
为聚类个数,在这里均表示自动处理,最终得到的结果如下
这个图横坐标表示簇的序号,纵坐标表示两个簇之间的距离。如果从上往下看,粉色的和蓝色的被明显分为两类,而后蓝色内部又被分为两类。如果以距离6为阈值,那么距离大于6的簇可分为三组。
绘图层次
通过调控dendrogram
中的truncate_mode
,可以修改绘图层次
test = dendrogram(mat, truncate_mode='level', p=3)
plt.show()
如下图所示,用括号括起来的横坐标表示被兼并的样本个数。
定义距离
距离越近,则越相似,则越可以被归为一类。所以,如何定义距离在层次聚类中显得十分重要,AgglomerativeClustering
的构造函数中比较重要的参数如下
AgglomerativeClustering(n_clusters=2, *, affinity='deprecated',linkage='ward')
其中affinity
起到定义距离的作用,下面逐一演示不同距离时的聚类情况
distances = ["euclidean", "l1", "l2", "manhattan", "cosine"]
fig = plt.figure()
for i,d in enumerate(distances):model = AgglomerativeClustering(affinity=d,linkage='average', distance_threshold=0, n_clusters=None)model = model.fit(X)mat = getLinkageMat(model)ax = fig.add_subplot(2,3,i+1)plt.title(d)test = dendrogram(mat, ax=ax, truncate_mode='level', p=3)plt.show()
从结果来看,除了余弦距离有些诡异之外,其他情况都还可以。而且曼哈顿距离与L1
,欧氏距离和L2
都有极强的相似性。
此外linkage 参数有4个选项:
ward
:簇的方差最小average
:簇间的平均距离最小complete
:簇间的平均距离最大single
:单簇之间的距离最小
【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering相关推荐
- 机器学习实战——层次聚类算法
机器学习实战--层次聚类算法 1 层次聚类概述 2 sklearn中的实现 1 层次聚类概述 层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构. 数据集的划分可采用"自底向上& ...
- 【机器学习】层次聚类算法 CURE算法
CURE算法是一种层次聚类算法. 层次聚类方法(Hierarchical Clustering Method) 是一种发展比较早.应用广泛的聚类方法,按采用"自顶向下(Top-Down)&q ...
- 机器学习技术-层次聚类算法(组平均)-综合层次聚类方法(BIRCH、CURE)
基于层次的聚类方法,是对给定的数据进行层次的分解,直到某种条件满足为止.首先将数据点组成一颗聚类树,根据层次,自底向上或是自顶向下分解.层次的方法可以分为凝聚的方法和分裂的方法. 凝聚的方法,也称为自 ...
- 【Python】sklearn机器学习之Birch聚类算法
文章目录 基本原理 sklearn调用 基本原理 BIRCH,即Balanced Iterative Reducing and Clustering Using Hierarchies,利用分层的平衡 ...
- 【Python机器学习实战】聚类算法——层次聚类(HAC)和DBSCAN
层次聚类和DBSCAN 1.层次聚类 下面这样的结构应该比较常见,这就是一种层次聚类的树结构,层次聚类是通过计算不同类别点的相似度创建一颗有层次的树结构,在这颗树中,树的底层是原始数据点,顶层是一个聚 ...
- 【Python机器学习】层次聚类AGNES、二分K-Means算法的讲解及实战演示(图文解释 附源码)
需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 层次聚类 在聚类算法中,有一类研究执行过程的算法,它们以其他聚类算法为基础,通过不同的运用方式试图达到提高效率,避免局部最优等目的,这类算法主要有 ...
- 层次聚类python实现_Python机器学习——Agglomerative层次聚类
层次聚类(hierarchical clustering)可在不同层次上对数据集进行划分,形成树状的聚类结构.AggregativeClustering是一种常用的层次聚类算法. 其原理是:最初将每个 ...
- 【火炉炼AI】机器学习023-使用层次聚类算法构建模型
[火炉炼AI]机器学习023-使用层次聚类算法构建模型 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotli ...
- Python机器学习——Agglomerative层次聚类
层次聚类(hierarchical clustering)可在不同层次上对数据集进行划分,形成树状的聚类结构.AggregativeClustering是一种常用的层次聚类算法. 其原理是:最初 ...
最新文章
- sparkSQL1.1入门之二:sparkSQL执行架构
- Vue creatElement
- ES Next Arrow function Promise Iterator Generator yield Async Await
- 如何快速定位程序Core?
- 211计算机实力末尾的学校,实力最弱的十所985大学是哪几所?选择末尾985好还是选211好?...
- Eureka 配置参数说明
- mysql5.5.35编译安装_CentOS 6.5最小化编译安装mysql 5.5.35
- SharePoint 2010--为WebPart创建自定义属性
- Web移动开发基本概念
- 下载yaml appium
- winrar解压器_与WinRAR齐名的经典解压缩软件——WinZip,不仅仅是情怀
- css文章排版代码,css文章排版
- 二叉树的左视图和右视图 形象理解(附C++代码)
- 如何在 Android 上恢复删除屏幕截图/照片的四种方式
- springboot下载excel(解决文件损坏问题)
- jy-12-SPRINGMYBATIS02——云笔记08-刘苍松
- 唐宇迪学习笔记4:Python可视化库——Seaborn
- 港科夜闻|香港科技大学(广州)与广东联通签署多方位战略合作协议
- spring组合注解
- scrapy 爬 zol 笑话大全
热门文章
- 关于vue组件开发过程中一直报错:This relative module was not found:
- 阿里17实习生编程-数组四等分
- JS字符串数据类型转化和分割的方法
- PHPRunner 10.7.0 PHP代码生成器
- android六轴传感器,6轴传感器、IP67防水:AMAZFIT米动智芯2 上架有品
- 二叉树非递归遍历实现(Java)
- 为魅族M8手机开发的围棋打谱软件(M8WeiqiPu)发布0.1版
- 2星|陈九霖《商业的逻辑》:曾经入狱的中航油(新加坡)掌门人的商业感想...
- (MM)物料BOM与生产BOM对比表
- 【数据库】01_sql语句