首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过枕叶图给出相似矩阵

通过枕叶图给出相似矩阵
EN

Stack Overflow用户
提问于 2015-03-12 23:48:13
回答 1查看 4.2K关注 0票数 3

我用Python计算了一个jaccard相似矩阵。我想聚类的相似性最高至最低,然而,无论我使用什么链接功能,它都会产生相同的树状图!我觉得函数假定我的矩阵是原始数据,但我已经计算了第一个相似矩阵。有没有办法把这个相似矩阵传递到树状图上,这样它就能正确地画出图来?或者,我必须输出矩阵,简单地用R完成它,通过原始的原始数据是不可能的,因为我正在计算单词的相似性。谢谢你的帮助!

以下是一些代码:

代码语言:javascript
复制
SimMatrix = [[ 0.,0.09259259,  0.125     ,  0.        ,  0.08571429],
   [ 0.09259259,  0.        ,  0.05555556,  0.        ,  0.05128205],
   [ 0.125     ,  0.05555556,  0.        ,  0.03571429,  0.05882353],
   [ 0.        ,  0.        ,  0.03571429,  0.        ,  0.        ],
   [ 0.08571429,  0.05128205,  0.05882353,  0.        ,  0.        ]]

linkage = hcluster.complete(SimMatrix) #doesnt matter what linkage...
dendro  = hcluster.dendrogram(linkage) #same plot for all types?
show()

如果运行这段代码,您将看到一个完全向后的树状图。无论我使用哪种连接类型,它都会产生相同的树状图。这凭直觉是不对的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-13 02:21:11

这是解决办法。原来SimMatrix首先需要转换成一个压缩矩阵(该矩阵的对角线、右上或左下角)。您可以在下面的代码中看到这一点:

代码语言:javascript
复制
import scipy.spatial.distance as ssd
distVec = ssd.squareform(SimMatrix)
linkage = hcluster.linkage(1 - distVec)
dendro  = hcluster.dendrogram(linkage)
show()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29022451

复制
相关文章

相似问题

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