单链接层次聚类分析

单链接层次聚类是一种将数据点逐渐合并成一个大的聚类的方法。在这一过程中,使用树状图来表示层次聚类的结果,聚类之间的合并基于它们之间的距离。不同的链接方式,例如单链接、完全链接和平均链接,使用不同的方法来计算聚类之间的距离。

链接标准

链接标准决定了观察集合之间的距离作为观察之间成对距离的函数。在单链接聚类中,两个聚类之间的距离是两个聚类成员之间的最小距离。在完全链接中,两个聚类之间的距离是两个聚类成员之间的最大距离。在平均链接中,两个聚类之间的距离是两个聚类成员之间所有距离的平均值。最后,在质心链接中,两个聚类之间的距离是它们质心之间的距离。

使用单链接聚类

本文旨在理解使用单链接聚类方法的聚类过程。首先导入必要的库:

import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline import scipy.cluster.hierarchy as shc from scipy.spatial.distance import squareform, pdist

然后,使用numpy.random.random_sample创建玩具数据:

a = np.random.random_sample(size = 5) b = np.random.random_sample(size = 5)

生成随机数据点后,将创建一个pandas数据框:

point = ['P1','P2','P3','P4','P5'] data = pd.DataFrame({'Point':point, 'a':np.round(a,2), 'b':np.round(b,2)}) data = data.set_index('Point') data

查看玩具数据。看起来干净。让进入聚类步骤。

plt.figure(figsize=(8,5)) plt.scatter(data['a'], data['b'], c='r', marker='*') plt.xlabel('Column a') plt.ylabel('column b') plt.title('Scatter Plot of x and y') for j in data.itertuples(): plt.annotate(j.Index, (j.a, j.b), fontsize=15)

散点图显示了数据点在a和b列上的分布情况。

dist = pd.DataFrame(squareform(pdist(data[['‘a’, ‘b’]]), ‘euclidean’), columns=data.index.values, index=data.index.values)

为了方便,只考虑矩阵的下界值,如下所示。具体来说,下界值表示数据集中任意两点之间的最小距离。

可以看到点P3, P4具有最小的距离“0.30232”。因此,首先将它们合并为一个聚类。

更新聚类(P3,P4)到P1的距离:

= Min(dist(P3,P4), P1)) -> Min(dist(P3,P1),dist(P4,P1)) = Min(0.59304, 0.46098) = 0.46098

重复步骤3和4,直到只剩下一个聚类。

单链接聚类涉及几个关键步骤。最初,在可视化数据和计算距离矩阵后,基于最短距离形成聚类。一旦每个聚类形成,算法更新距离矩阵以包含新距离。在整个迭代过程中,所有数据点都被聚类,直到揭示数据中的模式。因此,它是一种简单直观的方法,可以发现数据中的隐藏结构。

首先,LDA最大化了类间散布,同时最小化了类内散布。此外,它假设类别具有高斯分布和相同的协方差矩阵。此外,LDA可以扩展到多类问题,并解决了逻辑回归的一些局限性。最后,正则化技术有助于克服LDA的小样本大小问题。

Q1.什么是单链接层次聚类

A.单链接层次聚类,也称为单链接聚类,基于它们之间的最近一对点合并聚类。它形成了最小化点之间最小成对距离的聚类。

Q2.有两种类型的层次聚类吗?

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485