基于亲和度矩阵的谱聚类

时间:2015-10-20 19:05:02

标签: python cluster-analysis spectral

    import csv
    import numpy as np
    from sklearn.cluster import SpectralClustering
    reader = csv.reader(open("/Users/Desktop/user2.csv","rU"),
                        dialect=csv.excel_tab)
    x = list(reader)
    result = np.array(x).astype('float')
    lena = result.reshape(182, 182)
    type(lena)
    # Apply spectral clustering (this step goes much faster if you have pyamg
    # installed)
    label = SpectralClustering(n_clusters=5, 
                               affinity='precomputed').fit_predict(lena) 

我有182个用户的亲和力矩阵。我想基于相似度矩阵对用户进行聚类。但结果似乎将几乎所有用户聚集到一个集群。谁能解释一下呢?

对于相似度矩阵。有182 * 182个条目。 6510条目> 0.001,最大值> 0.97。对话框矩阵为0.此相似度矩阵是否存在问题,或者光谱聚类不适合这种情况?你会推荐其他任何聚类方法吗?

1 个答案:

答案 0 :(得分:1)

您提供的统计数据不够完整,无法给出明确的意见,但我可以从结果中做出一些猜测。我怀疑问题来自于你的空间中有一系列连接良好的条目。

以1个单位的间隔可视化182个项目的简单行,其中亲和力是线性距离的立方体的倒数。你最近的邻居有亲和力1/1;接下来是1/8,然后是1 / 27,1 / 64,......

这给每个实体只有20个邻居(每边10个),亲和力> = 0.001,总共3640(如果允许环绕)加上主对角线。这比你的实际例子要少。但是,由于直接邻居具有1的亲和性,因此几乎任何聚类算法的自然连接最终将所有这些合并为单个类。这套装置高度连接,但不是特别紧凑。

因此,问题变成了“什么样的聚类适合于数据的形状?”您能否以某种方式描述各个条目的连通性,紧凑性和连接性? 看到任何自然的丛生和切割点?