无监督学习算法中层次聚类(Hierarchical Clustering)

举报
皮牙子抓饭 发表于 2023/08/28 09:25:50 2023/08/28
【摘要】 层次聚类是一种无监督学习算法,用于将一组数据点划分为不同的聚类簇。与其他聚类算法不同,层次聚类还能够构建一个层次化的聚类树,可以展示出数据点之间的层次结构关系。 层次聚类算法有两种主要的方法:凝聚式聚类(Agglomerative Clustering)和分裂式聚类(Divisive Clustering)。 凝聚式聚类从每个数据点作为一个单独的聚类开始,然后逐步合并最相似的聚类,直到得到所...

层次聚类是一种无监督学习算法,用于将一组数据点划分为不同的聚类簇。与其他聚类算法不同,层次聚类还能够构建一个层次化的聚类树,可以展示出数据点之间的层次结构关系。 层次聚类算法有两种主要的方法:凝聚式聚类(Agglomerative Clustering)和分裂式聚类(Divisive Clustering)。 凝聚式聚类从每个数据点作为一个单独的聚类开始,然后逐步合并最相似的聚类,直到得到所需数量的聚类簇。合并的相似度可以通过距离度量(如欧氏距离)来计算。 分裂式聚类则是从所有数据点作为一个聚类开始,然后逐步将聚类分裂为更小的子聚类,直到每个聚类簇只包含一个数据点。 层次聚类的主要优点是可以自动确定聚类的数量,因为聚类树的结构可以通过不同的截断阈值来解释。此外,层次聚类还可以提供更详细的聚类结构,可以更好地理解数据点之间的相似性和关系。 然而,层次聚类的计算复杂度较高,尤其是在数据量较大时。此外,层次聚类对噪声和离群值比较敏感,可能会导致不稳定的聚类结果。 在实际应用中,可以根据具体任务和数据特点选择合适的层次聚类算法,并结合其他的聚类评估指标来评估聚类质量。

以下是一个使用Python中的scikit-learn库进行层次聚类的代码示例:

pythonCopy codefrom sklearn.cluster import AgglomerativeClustering
import numpy as np
# 创建一个示例数据集
X = np.array([[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]])
# 创建一个层次聚类对象
clustering = AgglomerativeClustering(n_clusters=2)
# 训练模型并预测数据点的所属聚类簇
clustering.fit(X)
labels = clustering.labels_
# 输出每个数据点的所属聚类簇
print(labels)

在上面的代码中,首先导入了​​AgglomerativeClustering​​类和​​numpy​​库。然后,创建了一个示例数据集​​X​​,其中包含6个二维数据点。接下来,创建了一个​​AgglomerativeClustering​​对象,并通过​​n_clusters​​参数指定了期望的聚类簇数量为2。 然后,使用​​fit()​​方法训练模型,并使用​​labels_​​属性获取每个数据点的所属聚类簇标签。最后,通过打印​​labels​​数组,输出每个数据点的所属聚类簇。 请注意,这只是一个简单的示例,实际应用中可能需要根据数据集的特点和要解决的问题进行参数调整和优化。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。