首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scipy hierarchy.linkage和Bray-Curtis距离不一致

scipy hierarchy.linkage和Bray-Curtis距离不一致
EN

Stack Overflow用户
提问于 2018-02-06 04:39:48
回答 1查看 413关注 0票数 1

我正在使用来自几个不同采样站(站)的一组物种计数(计数)。我已经使用scikit bio的pw_distance函数计算了每对可能的样本站点之间的布雷-柯蒂斯相似度。这会产生一个距离矩阵,其值在0到1之间。到目前为止还不错。

我想使用这个距离矩阵来生成一个树状图,显示样本站点是如何聚集在一起的。我使用scipy的hierachy.linkage函数来查找树状图的链接,然后用hierarchy.dendrogram绘制。

下面是我的代码:

代码语言:javascript
复制
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相似性相对应?如果它是正确的,那么树状图上的距离到底对应于什么呢?

EN

回答 1

Stack Overflow用户

发布于 2018-02-06 19:24:23

查看评论中共享的链接,因为它们解决了您的问题。

这些链接中没有介绍的一个链接步骤是,您应该在bc_dm.condensed_form()上调用scikit-bio,而不是在bc_dmsim上调用。这将为您提供所需格式的输入。如果您传递了一个2D矩阵,linkage会假设它是您的counts矩阵,并根据这些数据计算样本之间的欧几里得距离。

另外,一定要注意scipy.cluster.hierarchy.linkagemethod参数,因为它会影响树状图中分支长度的解释。scipy.cluster.hierarchy.linkage的文档字符串包含有关如何为不同方法计算这些值的详细信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48631092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档