首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在scipy.cluster.hierarchy.linkage()中使用距离矩阵?

在scipy.cluster.hierarchy.linkage()中使用距离矩阵?
EN

Stack Overflow用户
提问于 2013-09-23 05:56:26
回答 1查看 27.7K关注 0票数 46

我有一个距离矩阵n*n M,其中M_ijobject_iobject_j之间的距离。因此,正如预期的那样,它采取了以下形式:

代码语言:javascript
运行
复制
   /  0     M_01    M_02    ...    M_0n\
   | M_10    0      M_12    ...    M_1n |
   | M_20   M_21     0      ...    M2_n |
   |                ...                 |
   \ M_n0   M_n2    M_n2    ...      0 / 

现在,我希望用分层聚类对这些n个对象进行聚类。Python有一个叫做scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean')的实现。

其文件说:

Y必须是{n \选择2}大小的向量,其中n是距离矩阵中配对的原始观测数。 Y: ndarray 压缩的或多余的距离矩阵。凝聚距离矩阵是包含距离矩阵的上三角的平坦阵列。这是pdist返回的表单。或者,n维的m观测向量集合可以由n个阵列作为m传递。

我对y的这种描述感到困惑。我可以直接将我的M y**?**输入到中。

更新

@洪博珠-cn 在GitHub中提出了这个问题。这正是我所关心的。然而,作为GitHub的新手,我不知道它是如何工作的,因此不知道如何处理这个问题。

EN

回答 1

Stack Overflow用户

发布于 2013-09-23 08:31:11

现在,您应该传递“凝聚距离矩阵”,即以向量形式表示的距离矩阵的上三角形:

代码语言:javascript
运行
复制
y = M[np.triu_indices(n,1)]

“洪博珠-cn的拉”请求探讨看来,解决方案似乎是在linkage函数中添加一个额外的关键字参数,允许用户显式地指定他们传递的是一个n距离矩阵,而不是一个m观测矩阵。

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

https://stackoverflow.com/questions/18952587

复制
相关文章

相似问题

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