单链接层次聚类是一种将数据点逐渐合并成一个大的聚类的方法。在这一过程中,使用树状图来表示层次聚类的结果,聚类之间的合并基于它们之间的距离。不同的链接方式,例如单链接、完全链接和平均链接,使用不同的方法来计算聚类之间的距离。
链接标准决定了观察集合之间的距离作为观察之间成对距离的函数。在单链接聚类中,两个聚类之间的距离是两个聚类成员之间的最小距离。在完全链接中,两个聚类之间的距离是两个聚类成员之间的最大距离。在平均链接中,两个聚类之间的距离是两个聚类成员之间所有距离的平均值。最后,在质心链接中,两个聚类之间的距离是它们质心之间的距离。
本文旨在理解使用单链接聚类方法的聚类过程。首先导入必要的库:
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.有两种类型的层次聚类吗?