首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中从scipy中的链接/距离矩阵计算集群分配?

如何在Python中从scipy中的链接/距离矩阵计算集群分配?
EN

Stack Overflow用户
提问于 2013-04-11 22:41:11
回答 2查看 12.7K关注 0票数 24

如果您在Python中的scipy中有此分层聚类调用:

代码语言:javascript
运行
复制
from scipy.cluster.hierarchy import linkage
# dist_matrix is long form distance matrix
linkage_matrix = linkage(squareform(dist_matrix), linkage_method)

那么,从这里开始对单个点的分配进行聚类的有效方法是什么?即长度为N的向量,其中N是点数,其中每个条目i是点i的簇数,给定给定阈值thresh在结果聚类上生成的簇数?

需要说明的是:簇号是在对树应用阈值之后它所在的簇。在这种情况下,您将为它所在的群集的每个叶节点获得一个唯一的群集。独特之处在于,每个点都属于一个“最具体的簇”,该簇由您剪切树状图的阈值定义。

我知道scipy.cluster.hierarchy.fclusterdata给你这个集群赋值作为它的返回值,但是我是从一个定制的距离矩阵和距离度量开始的,所以我不能使用fclusterdata。问题可以归结为:如何计算fclusterdata正在计算的内容--集群分配?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-16 03:18:18

如果我没理解错的话,这就是fcluster所做的:

scipy.cluster.hierarchy.fcluster(Z, t, criterion='inconsistent', depth=2, R=None, monocrit=None)

从由链接矩阵Z定义的分层聚类形成扁平聚类。

..。

返回:一个长度为n的数组。Ti是原始观察值i所属的平面簇号。

因此,只需调用fcluster(linkage_matrix, t),其中t就是您的阈值。

票数 28
EN

Stack Overflow用户

发布于 2017-04-03 00:28:39

如果您想查看每个集群级别的成员以及它们的聚集顺序,请参阅https://stackoverflow.com/a/43170608/5728789

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

https://stackoverflow.com/questions/15951711

复制
相关文章

相似问题

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