Python 基于亲和矩阵的谱聚类
我有一个182个用户的亲和矩阵。我想根据相似度矩阵对用户进行聚类。但结果似乎是将几乎所有的用户聚集到一个集群中。有人能解释一下吗Python 基于亲和矩阵的谱聚类,python,cluster-analysis,spectral,Python,Cluster Analysis,Spectral,我有一个182个用户的亲和矩阵。我想根据相似度矩阵对用户进行聚类。但结果似乎是将几乎所有的用户聚集到一个集群中。有人能解释一下吗 对于相似矩阵。有182*182个条目。6510个条目>0.001,最大值>0.97。对话框矩阵为0。这个相似矩阵有问题吗?或者光谱聚类不适合这种情况吗?您还推荐其他聚类方法吗?您提供的统计数据不够完整,无法给出明确的意见,但我可以从结果中做出一些猜测。我怀疑这个问题是因为在你的空间中有一系列连接良好的条目 以1个单位的间隔,想象一条包含182个项目的简单直线,亲和力是
对于相似矩阵。有182*182个条目。6510个条目>0.001,最大值>0.97。对话框矩阵为0。这个相似矩阵有问题吗?或者光谱聚类不适合这种情况吗?您还推荐其他聚类方法吗?您提供的统计数据不够完整,无法给出明确的意见,但我可以从结果中做出一些猜测。我怀疑这个问题是因为在你的空间中有一系列连接良好的条目 以1个单位的间隔,想象一条包含182个项目的简单直线,亲和力是线性距离立方的倒数。你的近邻有1/1的亲缘关系;下一个是1/8,然后是1/27,1/64 这使得每个实体只有20个近邻(每边10个),其亲和性>=0.001,总共3640个(如果允许环绕)加上主对角线。这比您的实际示例要少。然而,由于近邻的亲和力为1,几乎任何聚类算法的自然连接最终都会将所有这些合并到一个类中。这套设备高度连接,但不是特别紧凑
因此,问题变成了,“什么样的聚类适合于数据的形状?”您能否以某种方式描述单个条目的连接性、紧凑性和连接性?您是否看到任何自然聚集和切割点?您研究过数据吗?也许几乎所有的用户都非常相似?
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)