如何将原始数据与群集数据关联起来

2024-09-27 07:28:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个距离矩阵表示成对元素的距离矩阵 例如

    A B C D .....
A   n1 n2 n3
B n1    
C n2 n4
D n3 n5 ....... 
E.........

我把数组输入到集群中

^{pr2}$

我的fcluster输出如下所示 【4 10 12 1 5 13 2 11 1 7 8 3 14 6 10 16 9 15 1 7】 从以前别人的海报上 Clustering with scipy - clusters via distance matrix, how to get back the original objects

我明白 输出T[i]只显示集群中元素的数量..如何链接原始元素a、B、C、D、E。。。。。有聚类结果和树状图的元素?把它们和我的数据做适当的实验。在


Tags: 元素距离with集群矩阵数组海报clustering
1条回答
网友
1楼 · 发布于 2024-09-27 07:28:14

我知道输出T[I]只显示集群中元素的数量,…”

T[j]是第j个数据点的“簇号”。也就是说,fcluster为集群提供数据点的分配。因此,例如,如果有五个数据点,fcluster将第一个、第二个和最后一个放在集群1中,其他的放在集群2中,fcluster的返回值将是array([1, 1, 2, 2, 1])。在

下面是一个演示,演示如何将这些数据分离。为了方便起见,我使用了fclusterdata,而不是{}和{}的组合。fclusterdata返回的内容与fcluster相同。在

import numpy as np

def cluster_indices(cluster_assignments):
    n = cluster_assignments.max()
    indices = []
    for cluster_number in range(1, n + 1):
        indices.append(np.where(cluster_assignments == cluster_number)[0])
    return indices

if __name__ == "__main__":
    from scipy.cluster.hierarchy import fclusterdata

    # Make some test data.
    data = np.random.rand(15,2)

    # Compute the clusters.
    cutoff = 1.0
    cluster_assignments = fclusterdata(data, cutoff)

    # Print the indices of the data points in each cluster.
    num_clusters = cluster_assignments.max()
    print "%d clusters" % num_clusters
    indices = cluster_indices(cluster_assignments)
    for k, ind in enumerate(indices):
        print "cluster", k + 1, "is", ind

典型输出:

^{pr2}$

相关问题 更多 >

    热门问题