Kmeans&HCA + iris数据集+python实现

本文介绍了K均值(K-means)和层次凝聚聚类算法(HCA)的基本原理,并使用Python的sklearn库在iris数据集上进行实验。K-means将数据分为三类,而HCA通过计算欧式距离和使用linkage函数进行聚类,最终结果显示两种方法在iris数据集上都有较好的聚类效果。

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

基本的聚类分析算法

  1. K均值 (K-means):
    基于原型的、划分的距离技术,它试图发现用户指定个数(K)的簇。
    a. 随机选取k个中心点
    b. 遍历所有数据,将每个数据划分到最近的中心点中
    c. 计算每个聚类的平均值,并作为新的中心点
    d. 重复2-3,直到这k个中线点不再变化(收敛了),或执行了足够多的迭代
    时间复杂度:O(Inkm)
    空间复杂度:O(n
    m)

  2. 层次凝聚聚类算法(HCA - Hierarchical Agglomerative Clustering):
    主要思想就是,先把每一个样本点当做一个聚类,然后不断重复的将其中最近的两个聚类合并(就是凝聚的含义),直到满足迭代终止条件。
    a. 将训练样本集中的每个数据点都当做一个聚类;
    b. 计算每两个聚类之间的距离,将距离最近的或最相似的两个聚类进行合并;
    c. 重复上述步骤,直到得到的当前聚类数是合并前聚类数的10%,即90%的聚类都被合并了;当然还可以设置其他终止条件,这样设置是为了防止过度合并。

  3. DBSCAN:
    一种基于密度的划分距离的算法,簇的个数有算法自动的确定,低密度中的点被视为噪声而忽略,因此其不产生完全聚类。
    自己尝试过。。。好像对iris数据集不太好用,有空再研究
    https://blog.youkuaiyun.com/weixin_43909872/article/details/85342540

用python+sklearn+iris数据集去实验一下:

  1. K均值 (K-means)
data = pd.read_csv("iris.csv")
data = np.mat(data)
y_pred = KMeans(n_clusters=3).fit(data[:, 1:
<think>首先,用户的问题是“HCA 聚类技术”,我需要用中文回答。HCA 可能指的是Hierarchical Clustering Analysis,即层次聚类分析。 所以,我的回答应该解释什么是HCA聚类技术,包括它的基本思想、步骤、优缺点等。然后,在回答末尾,我必须提出3-5个相关问题,并以“§§相关问题§§”开头,不能换行分散。 回忆一下层次聚类:它是一种聚类方法,通过计算数据点之间的相似度(如距离),逐步合并或分裂形成层次结构的聚类树(dendrogram)。常见方法包括凝聚法(agglomerative)和分裂法(divisive),凝聚法更常用。 回答结构: 1. 介绍HCA聚类技术。 2. 解释其基本思想。 3. 描述关键步骤。 4. 提供优缺点。 5. 结束时,添加相关问题。 由于用户要求用中文,整个回答都要用中文。 最后,相关问题必须基于用户的问题和我的回答。所以,我应该提出关于HCA的进一步问题,比如不同方法、应用场景等。 示例格式中,有代码块,但这里没有代码,所以我可以直接写文本。 确保输出格式: - 回答完问题后,第一行必须是“§§相关问题§§”,然后列出3-5个问题,每个问题用数字点号,如“1. ···”。 问题列表: 1. 什么是凝聚法和分裂法在HCA中的区别? 2. HCA聚类中如何计算距离? 3. HCA聚类在哪些领域有应用? 4. 如何解读聚类树图? 5. HCA与其他聚类方法如K-means的比较? 现在,构建回答: 开头:HCA聚类技术,即层次聚类分析,是一种无监督学习方法,用于将数据点分组为聚类,形成层次结构。 基本思想:通过迭代地合并或分裂聚类,构建一个树状结构(dendrogram),显示不同层次上的聚类关系。 步骤: - 凝聚法:每个点初始为一个聚类,然后合并最接近的聚类,直到所有点合并为一个聚类。 - 分裂法:所有点初始为一个聚类,然后分裂,直到每个点是一个聚类。 优缺点:优点包括提供层次视图、不需要预先指定聚类数;缺点包括计算复杂度高、对噪声敏感。 然后,结束回答,添加相关问题。 完整回答草稿: HCA聚类技术,全称为层次聚类分析(Hierarchical Clustering Analysis),是一种常用的无监督学习算法,用于将数据集中的对象组织成树状的聚类结构。其核心思想是通过计算对象之间的相似度(如欧氏距离),逐步合并或分裂聚类,形成层次化的分组。常见的方法有凝聚层次聚类(自底向上)和分裂层次聚类(自顶向下),其中凝聚法更为流行。 在凝聚法中,初始时每个数据点被视为一个独立的聚类。然后,算法重复以下步骤:计算所有聚类对之间的距离,合并距离最小的两个聚类,直到所有点合并为一个聚类。这个过程生成一个聚类树(dendrogram),用户可以通过切割树图来选择不同层次的聚类数。 HCA的优点包括:不需要预先指定聚类数量,提供直观的层次结构,便于可视化。缺点是计算复杂度较高(O(n^3)),对于大规模数据集效率较低,且对初始距离度量敏感。 §§相关问题§§ 1. HCA聚类中的距离度量有哪些常见选择? 2. 如何解读聚类树图以确定最佳聚类数? 3. HCA聚类与K-means聚类的主要区别是什么? 4. 在哪些实际场景中HCA聚类特别适用? 5. 如何处理大规模数据集以优化HCA的计算效率? 确保问题数量在3-5个,我列出了5个,但可以调整到4个。用户指定3-5个,所以5个没问题。 最后,确认所有内容用中文。</think>### HCA 聚类技术 HCA(Hierarchical Clustering Analysis,层次聚类分析)是一种无监督学习算法,用于将数据集中的对象组织成树状结构(称为聚类树或dendrogram)。其核心思想是通过迭代计算对象之间的相似度(通常基于距离度量),逐步合并或分裂聚类,形成多层次的聚类层次。这种方法不需要预先指定聚类数量,而是通过构建一个完整的层次结构,允许用户根据需求选择不同粒度的聚类结果。 #### 基本思想 - **凝聚法(Agglomerative)**:自底向上方法,初始时将每个数据点视为一个独立聚类,然后迭代合并距离最小的聚类对,直到所有点合并为一个聚类。 - **分裂法(Divisive)**:自顶向下方法,初始时所有点属于一个聚类,然后递归分裂,直到每个点成为独立聚类(较少使用)。 #### 关键步骤(以凝聚法为例) 1. **初始化**:每个数据点作为一个聚类。 2. **计算距离**:使用距离度量(如欧氏距离、曼哈顿距离或相似度度量如相关系数)计算所有聚类对之间的距离。 3. **合并聚类**:找到距离最小的两个聚类,将其合并为一个新聚类。 4. **更新距离**:重新计算新聚类与其他聚类的距离(常用方法包括单链接、全链接、平均链接)。 5. **迭代**:重复步骤2-4,直到所有点合并为一个聚类。 6. **生成树图**:输出dendrogram,可视化聚类过程。 #### 优点 - 提供直观的层次结构,便于理解和可视化。 - 不需要预先指定聚类数。 - 适用于探索性数据分析,能揭示数据的内在层次关系。 #### 缺点 - 计算复杂度高(O(n^3)),不适合大规模数据集。 - 对距离度量的选择敏感,可能影响聚类效果。 - 对噪声和异常值较敏感,可能导致不稳定的聚类HCA广泛应用于生物信息学(如基因表达分析)、市场细分、图像分割和社会网络分析等领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值