我正在使用来自几个不同采样站(站)的一组物种计数(计数)。我已经使用scikit bio的pw_distance函数计算了每对可能的样本站点之间的布雷-柯蒂斯相似度。这会产生一个距离矩阵,其值在0到1之间。到目前为止还不错。
我想使用这个距离矩阵来生成一个树状图,显示样本站点是如何聚集在一起的。我使用scipy的hierachy.linkage函数来查找树状图的链接,然后用hierarchy.dendrogram绘制。
下面是我的代码:
from skbio.diversity.beta import pw_distances
from scipy.cluster import hierarchy
bc_dm = pw_distances(counts, stations, metric = "braycurtis")
# use (1 - bc_dm) to get similarity rather than dissimilarity
sim = 1 - bc_dm.data
Z = hierarchy.linkage(sim, 'ward')
hierarchy.dendrogram(
Z,
leaf_rotation=0., # rotates the x axis labels
leaf_font_size=10., # font size for the x axis labels
labels=bc_dm.ids,
orientation="left"
)here is a link to the dendrogram produced by the above code
据我所知,树状图上的距离应该对应于Bray-Curtis相似性(类似于距离),但我的树状图上的距离值达到了最大值30以上。这是正确的吗?如果不是,我如何缩放我的距离,以与样本站之间的Bray-Curtis相似性相对应?如果它是正确的,那么树状图上的距离到底对应于什么呢?
发布于 2018-02-06 19:24:23
查看评论中共享的链接,因为它们解决了您的问题。
这些链接中没有介绍的一个链接步骤是,您应该在bc_dm.condensed_form()上调用scikit-bio,而不是在bc_dm或sim上调用。这将为您提供所需格式的输入。如果您传递了一个2D矩阵,linkage会假设它是您的counts矩阵,并根据这些数据计算样本之间的欧几里得距离。
另外,一定要注意scipy.cluster.hierarchy.linkage的method参数,因为它会影响树状图中分支长度的解释。scipy.cluster.hierarchy.linkage的文档字符串包含有关如何为不同方法计算这些值的详细信息。
https://stackoverflow.com/questions/48631092
复制相似问题