sklearn聚类算法之HAC

本文深入探讨了层次凝聚聚类算法(HAC),包括其基本思想、实施步骤、相似度度量方法,并介绍了sklearn库中AgglomerativeClustering类的参数与属性。通过代码示例展示了如何使用HAC进行聚类,并通过可视化和连接约束展示其在数据集上的应用效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本思想
层次凝聚聚类算法(Hierarchical Agglomerative Clustering)是一种效果很好的聚类算法,简称HAC,它的主要思想是先把每个样本点当做一个聚类,然后不断地将其中最近的两个聚类进行合并,直到满足某个迭代终止条件,比如当前聚类数是初始聚类数的20%,80%的聚类数都被合并了。总结来说,HAC的具体实现步骤如下所示。
    (1)将训练样本集中的每个数据点都当做一个聚类;
    (2)计算每两个聚类之间的距离,将距离最近的或最相似的两个聚类进行合并;
    (3)重复上述步骤,直到满足迭代终止条件
在这个算法中,相似度的度量方式有如下四种方式:
    (1)Single-link:两个不同聚类中离得最近的两个点之间的距离,即MIN;
    (2)Complete-link:两个不同聚类中离得最远的两个点之间的距离,即MAX;
    (3)Average-link:两个不同聚类中所有点对距离的平均值,即AVERAGE;
    (4)Ward-link:两个不同聚类聚在一起后离差平方和的增量
API学习

class sklearn.cluster.AgglomerativeClustering(
	n_clusters=2,
	*, 
	affinity='euclidean', 
	memory=None, 
	connectivity=None,
	compute_full_tree='auto', 
	linkage='ward', 
	distance_threshold=None, 	
	compute_distances=False
)
参数 类型 解释
n_clusters int or None, default=2 表示聚类数,和distance_threshold中必须有一个是None
affinity str or callable, default=‘euclidean’ 相似度度量函数,可以是’euclidean’/‘manhattan’/'cosine’等
memory str or object with the joblib 缓存计算过程的文件夹路径
connectivity array-like or callable, default=None 可用来定义数据的给定结构,即对每个样本给定邻居样本
compute_full_tree ‘auto’ or bool, default=‘auto’ 如果为True,当聚类数较多时可用来减少计算时间
linkage {‘ward’, ‘complete’, ‘average’, ‘single’}, default=‘ward’ 表示不同的度量方法,默认为’ward’方法
distance_threshold float, default=None 如果不为None,表示簇不会聚合的距离阈值,此时n_clusters必须不为None,compute_full_tree必须为None
compute_distances bool, default=False 如果为True,即使不使用distance_threshold,也计算簇间距离,可用来可视化树状图
属性 类型 解释
n_clusters_ int 聚类数
labels_ ndarray of shape(n_samples) 分类结果
n_leaves_ int 层次树的树叶数量
n_connected_components_ int 在图中有联系的部分的数量
n_features_in_ int 拟合期间的特征个数
feature_names_in ndarray of shape(n_features_in_,) 拟合期间的特征名称
children_ array-like of shape (n_samples-1, 2) 每一个非叶子节点的孩子
distances_ array-like of shape (n_nodes-1,) children_中各节点之间的距离
方法 说明
fit(X[, y]) Fit the hierarchical clustering from features, or distance matrix.
fit_predict(X[, y]) Fit and return the result of each sample’s clustering assignment.
get_params([deep]) Get parameters for this estimator.
set_params(**params) Set the parameters of this estimator.

代码示例

>>> from sklearn.cluster import AgglomerativeClustering
>>> import numpy as np
>>> X = np.array([[1, 2], [
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值