dud*_*udu 5 python cluster-analysis scipy
我正在使用 python 2.7.9。
我scipy.cluster.hierarchy.dendrogram用来显示我的聚类结果。 树状图在这里。一个问题是,我有大约 200 个数据。我看不清楚他们的标签。
...
z=linkage(dist, method='complete')
R=dendrogram(z, labels=mylabels)
Run Code Online (Sandbox Code Playgroud)
1.我知道R["ival"]有叶子节点对应的标签,但是在如此密集的图中匹配一个值和数据并不是一件容易的事情。
2.我想到了提取一部分数据。例如,左侧的绿色链接。在这个比例下,可以清楚地看到标签。我认为这是一种非常灵活的数据分析方式。但我不知道该怎么做。
3.我用leaf_label_func. 我的目标是:当数据真正属于一个类时——例如cups——显示其名称/标签的一部分。例如,如果一个模型的名称为“cups_b1”,则只显示“b1”。所以,至少我可以一次看到我的数据的一类的位置。
def llf(id):
if id< nmodels:
mylabel=labels[id]
if mylabel.find("cups")!=-1:
index=mylabel.find("_")
outlabel=mylabel[index+1:]
return outlabel
else:
return "" #without the else part the function will return None, and that makes the output figure strange
R=dendrogram(z, leaf_label_func=llf, leaf_rotation=90 )
Run Code Online (Sandbox Code Playgroud)
但即使这样,我也无法识别标签。
确实没有一种很好的方法可以从树状图中直观地提取小细节。我想到了几个解决方案。
使用图表外部的集群数据。
from collections import defaultdict
clusterdict = defaultdict(list)
for ind,clust in zip(R['leaves'],R['color_list']):
clusterdict[clust].append(ind)
Run Code Online (Sandbox Code Playgroud)
现在您可以单独探索每个集群。
In [50]:
clusterdict['g']
Out[50]:
[73, 8, 30, 14, 0, 67, 91, 60, 81, 61, 83, 22]
Run Code Online (Sandbox Code Playgroud)
另一种选择是在两个轴 (x,y) 上打印树状图,如此处的代码所示。然后,如果您绝对必须看到图表上的标签,您可以在 x 轴上打印一半标签,在 y 轴上打印一半标签。
| 归档时间: |
|
| 查看次数: |
1644 次 |
| 最近记录: |