【问题标题】:Clustering a sparse co-occurrence matrix聚类一个稀疏的共现矩阵
【发布时间】:2017-06-04 18:51:50
【问题描述】:

我必须分析两个 N x N 共现矩阵(484x484 和 1060x1060)。矩阵沿对角线对称并包含许多零值。非零值是整数。

我想将非零的位置组合在一起。也就是说,我想做的是算法on this link。 When order by cluster is selected, the matrix gets re-arranged in rows and columns to group the non-zero values together.

由于我使用 Python 执行此任务,因此我查看了 SciPy Sparse Linear Algebra 库,但找不到我要查找的内容。

非常感谢任何帮助。提前致谢。

【问题讨论】:

    标签: python matrix cluster-analysis sparse-matrix


    【解决方案1】:

    如果您有一个矩阵dist,其中对象之间的距离成对,那么您可以通过在此矩阵上应用聚类算法 (http://scikit-learn.org/stable/modules/clustering.html) 来找到重新排列矩阵的顺序。例如,它可能是这样的:

    from sklearn import cluster
    import numpy as np
    model = cluster.AgglomerativeClustering(n_clusters=20,affinity="precomputed").fit(dist)
    new_order = np.argsort(model.labels_)
    ordered_dist = dist[new_order] # can be your original matrix instead of dist[]
    ordered_dist = ordered_dist[:,new_order]
    

    顺序由变量model.labels_给出,其中包含每个样本所属的簇的编号。几点观察:

    1. 您必须找到一个接受距离矩阵作为输入的聚类算法。 AgglomerativeClustering 就是这样一种算法(注意 affinity="precomputed" 选项告诉它我们正在使用预先计算的距离)。
    2. 您所拥有的似乎是成对相似度矩阵,在这种情况下,您需要将其转换为距离矩阵(例如dist=1 - data/data.max()
    3. 在我假设有 20 个集群的示例中,您可能需要稍微调整一下这个变量。或者,您可以尝试找到数据的最佳一维表示(使用例如MDS)来描述样本的最佳排序。

    【讨论】:

      【解决方案2】:

      因为您的数据是稀疏的,所以将其视为图形,而不是矩阵

      然后尝试各种图聚类方法。例如,集团对此类数据很感兴趣。

      请注意,并非所有东西都可能聚集在一起。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-23
        • 2012-05-23
        • 1970-01-01
        • 2011-03-11
        • 1970-01-01
        • 1970-01-01
        • 2018-01-19
        • 1970-01-01
        相关资源
        最近更新 更多