【问题标题】:How do I correlate my original data with clustered data如何将我的原始数据与集群数据关联起来
【发布时间】:2013-01-16 00:03:45
【问题描述】:

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

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

我输入数组,比如聚类

 arry=  [ 0 n1, n2, n3..
   n1.......
   n2 n4
   n3 n5 ]


Y=sch.linkage(arry,'single')
cutoff=1e-6
T=sch.fcluster(Y, cutoff,'distance')
print T

Z=sch.dendrogram(Y, color_threshold=cutoff)

我的 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..... 元素与集群结果和树状图联系起来?并将它们正确地添加到我的数字中。

【问题讨论】:

标签: python numpy scipy cluster-analysis hierarchical-clustering


【解决方案1】:

我理解输出 T[i] 只表示一个簇中元素的数量...”

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

这是一个演示,展示了如何将这些数据分开。为方便起见,我使用了fclusterdata,而不是linkagefcluster 的组合。 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

典型输出:

4 clusters
cluster 1 is [ 0  1  6  8 10 13 14]
cluster 2 is [ 3  4  5  7 11 12]
cluster 3 is [9]
cluster 4 is [2]

【讨论】:

  • 非常感谢!!! T[i]中cluster_number的含义很清楚! :-) 但是我如何将这些数据与生成的树状图联系起来?如果 T[i] 指向相同的簇号,看起来会很容易。但是如果 T[i] 不一样,我怎么知道哪个包含哪个?
  • 是的,我想我知道那个文档。不过还是谢谢!另一个问题是层次图的刻度/轴标签显示了聚类矩阵的索引。我可以隐藏它并添加一个带有我的元素名称的栏。但是有没有更好的方法或任何退出方法/功能已经帮助我们做到这一点?
猜你喜欢
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
相关资源
最近更新 更多