Python 上不同样本量的层次聚类
Hierarchical clustering with different sample size on Python
我想知道是否可以在 Python 上使用 不同的样本量 进行 层次聚类 ?更准确地说,使用 Ward 的最小方差法。
例如,我有 5 个不同长度的整数列表 A、B、C、D、E。我想要做的是根据 Ward 的方法将这 5 个列表分为 3 组(被合并的集群的方差减少)。
有人知道怎么做吗?
我们可以认为这 5 个列表是您想要分为 3 组的样本。
您可能知道的层次聚类可以作为输入距离矩阵。
距离矩阵评估样本之间的某种成对距离(或差异)。
您必须通过选择有意义的距离函数 来构建这个 5x5 矩阵。这在很大程度上取决于您的 samples/integers 代表什么。由于您的样本没有恒定长度,因此您无法计算欧氏距离等指标。
例如,如果列表中的整数可以解释为 类,您可以计算 Jaccard 指数来表达某种差异。
[1 2 3 4 5] and [1 3 4] have a Jaccard similarity index of 3/5 (or
dissimilarity of 2/5).
0 being entirely different and 1 perfectly identical.
https://en.wikipedia.org/wiki/Jaccard_index
计算相异矩阵后(实际上它只代表 5 个选择 2 = 10 个不同的值,因为该矩阵是对称的)您可以对其应用层次聚类。
重要的部分是找到适合您的问题的距离函数。
我想知道是否可以在 Python 上使用 不同的样本量 进行 层次聚类 ?更准确地说,使用 Ward 的最小方差法。
例如,我有 5 个不同长度的整数列表 A、B、C、D、E。我想要做的是根据 Ward 的方法将这 5 个列表分为 3 组(被合并的集群的方差减少)。
有人知道怎么做吗?
我们可以认为这 5 个列表是您想要分为 3 组的样本。 您可能知道的层次聚类可以作为输入距离矩阵。 距离矩阵评估样本之间的某种成对距离(或差异)。
您必须通过选择有意义的距离函数 来构建这个 5x5 矩阵。这在很大程度上取决于您的 samples/integers 代表什么。由于您的样本没有恒定长度,因此您无法计算欧氏距离等指标。
例如,如果列表中的整数可以解释为 类,您可以计算 Jaccard 指数来表达某种差异。
[1 2 3 4 5] and [1 3 4] have a Jaccard similarity index of 3/5 (or dissimilarity of 2/5).
0 being entirely different and 1 perfectly identical.
https://en.wikipedia.org/wiki/Jaccard_index
计算相异矩阵后(实际上它只代表 5 个选择 2 = 10 个不同的值,因为该矩阵是对称的)您可以对其应用层次聚类。
重要的部分是找到适合您的问题的距离函数。