我用Python计算了一个jaccard相似矩阵。我想聚类的相似性最高至最低,然而,无论我使用什么链接功能,它都会产生相同的树状图!我觉得函数假定我的矩阵是原始数据,但我已经计算了第一个相似矩阵。有没有办法把这个相似矩阵传递到树状图上,这样它就能正确地画出图来?或者,我必须输出矩阵,简单地用R完成它,通过原始的原始数据是不可能的,因为我正在计算单词的相似性。谢谢你的帮助!
以下是一些代码:
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()如果运行这段代码,您将看到一个完全向后的树状图。无论我使用哪种连接类型,它都会产生相同的树状图。这凭直觉是不对的!
发布于 2015-03-13 02:21:11
这是解决办法。原来SimMatrix首先需要转换成一个压缩矩阵(该矩阵的对角线、右上或左下角)。您可以在下面的代码中看到这一点:
import scipy.spatial.distance as ssd
distVec = ssd.squareform(SimMatrix)
linkage = hcluster.linkage(1 - distVec)
dendro = hcluster.dendrogram(linkage)
show()https://stackoverflow.com/questions/29022451
复制相似问题