python生成树状图_python – 距离矩阵的树形图或其他图

我有三个矩阵可供比较.每个都是5×6.我最初想要使用层次聚类来聚类矩阵,以便在给定相似性阈值的情况下对最相似的矩阵进行分组.

我在python中找不到任何这样的函数,所以我用手实现了距离测量,(p-norm where p=2).现在我有一个3×3的距离矩阵(我相信在这种情况下也是一个相似矩阵).

我现在正在尝试生成树状图.这是我的代码,这就是错误的.我想生成一个图形(如果可能的话,树形图),显示最相似的矩阵的簇.矩阵0,1,2,0和2是相同的并且应该首先聚集在一起,并且1是不同的.

距离矩阵如下所示:

> 0 1 2

0 0.0 2.0 3.85e-16

1 2.0 0.0 2.0

2 3.85e-16 2.0 0.0

码:

from scipy.cluster.hierarchy import dendrogram

import matplotlib.pyplot as plt

import numpy as np

from scipy.cluster.hierarchy import linkage

mat = np.array([[0.0, 2.0, 3.8459253727671276e-16], [2.0, 0.0, 2.0], [3.8459253727671276e-16, 2.0, 0.0]])

dist_mat = mat

linkage_matrix = linkage(dist_mat, "single")

dendrogram(linkage_matrix, color_threshold=1, labels=["0", "1", "2"],show_leaf_counts=True)

plt.title=("test")

plt.show()

这是输出:

Ia9XO.png

联系的意义是什么(dist_mat,’single’)?我会假设输出图看起来像这样,其中距离是2.0在0和1之间(例如).

bAV63.png

有更好的方法来表示这些数据吗?是否有一个函数可以接受几个矩阵而不是点,比较并形成距离矩阵,然后聚类?我对如何可视化这些矩阵之间的差异的其他建议持开放态度.

最佳答案

linkage的第一个参数不应该是方形距离矩阵.它必须是

condensed distance matrix.在你的情况下,那将是np.array([2.0,3.8459253727671276e-16,2]).您可以使用

scipy.spatial.distance.squareform将方形距离矩阵转换为压缩形式

如果将二维数组传递给与形状(m,n)的链接,则会将其视为n维空间中m个点的数组,并计算这些点本身的距离.这就是为什么当你通过方形距离矩阵时没有得到错误 – 但是你得到了一个不正确的情节. (这是联系的无证“特征”.)

另请注意,由于距离3.8e-16太小,与点0和2之间的链接相关联的水平线可能在图中不可见 – 它位于x轴上.

这是您脚本的修改版本.对于此示例,我将该小距离更改为0.1,因此关联的群集不会被x轴遮挡.

import numpy as np

from scipy.cluster.hierarchy import dendrogram, linkage

from scipy.spatial.distance import squareform

import matplotlib.pyplot as plt

mat = np.array([[0.0, 2.0, 0.1], [2.0, 0.0, 2.0], [0.1, 2.0, 0.0]])

dists = squareform(mat)

linkage_matrix = linkage(dists, "single")

dendrogram(linkage_matrix, labels=["0", "1", "2"])

plt.title("test")

plt.show()

这是脚本创建的图:

rAuXw.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值