我有一个与层次结构聚类有关的问题。我有一个相对复杂的数据集,有2000个项目/样本。我使用scipy对项目进行聚类,并给出不同的聚类,例如从0.1-0.9
from scipy.cluster import hierarchy as hac
Z=hac.linkage(distance, single,'euclidean')
results=hac.fcluster(Z, cutoff,'distance')
如何在组x中截止为0.1时检查/跟踪某个项目,如果截止为0.2,则在组y中。等
我考虑过显示树形图,但是要从树形图中追踪2000个样本中的1个项目会太乱了吗?
答案 0 :(得分:0)
尝试使用set(list(..))
构建一组群集ID以删除重复项,然后浏览元素并过滤数据,具体取决于它们所属的群集。试一试,因为您没有提供数据样本来测试它。
您的代码如下:
clusterIDs = set(list(results))
D= {} # Dictinary where you store ClusterID: [list of points that belong to that cluster]
for i, clusterID in enumerate(clusterIDs):
clusterItems = data[np.where(results == clusterID)]
D[clusterID]=clusterItems