如果您在python中的scipy中具有此层次结构的集群调用:
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
正在计算的内容-
群集分配?
如果我理解正确,那是fcluster的作用:
scipy.cluster.hierarchy.fcluster(Z, t, criterion='inconsistent', depth=2, R=None, monocrit=None)
从链接矩阵Z定义的层次聚类中形成平面聚类。
…
返回:长度为n的数组。T [i]是原始观测值i所属的平面簇数。
因此,只需致电fcluster(linkage_matrix, t)
,t
您的门槛在哪里。
我需要计算存储在csr稀疏矩阵和一些点列表中的所有点之间的欧氏距离。对我来说,将csr转换为稠密的csr会更容易,但由于内存不足,我无法将其转换为稠密的csr,因此我需要将其保留为csr。 例如,我有一个数据\u csr稀疏矩阵(csr和稠密视图): 这个中心点列表: 使用包,data_csr和中心之间的欧几里德距离数组将像下面这样。因此,在center的每行中,总共6个点中的每一个点都是根据da
问题内容: 我为城市建立了邻接矩阵,并在它们之间建立了联系。例如AB,BC,CD。现在,我想知道是否可以计算未连接的城市之间的距离。是否可以计算未连接节点之间的矩阵距离并找到路径? 城市班 主要方法 这是我运行main方法时的输出,我认为一切都很好。 现在我想计算从A到D的距离,但我不知道该怎么做。我将不胜感激。谢谢! 问题答案: 要在加权图中找到最短路径(路线的每个部分都有不同的权重),可以使用
问题内容: 我有一个距离矩阵N * N ,其中是之间的距离和。因此,正如预期的那样,它采用以下形式: 现在,我希望通过分层聚类将这n个对象聚类。Python有一个称为的实现。 它的文档说: y必须是{n \ choose 2}大小的向量,其中n是距离矩阵中成对的原始观测数。 y:ndarray 压缩或冗余距离矩阵。压缩距离矩阵是包含距离矩阵上三角的平面阵列。这是pdist返回的形式。替代地,可以将
最后,我们准备把数据从文件读入一个矩阵中。具体来说,每个城市在该矩阵中都一个相应的行和列。 我们将在main函数中创建该矩阵,它会剩余大量空间: apmatrix<int> distances (50, 50, 0); 在processLine内部,我们从Set中得到两个城市的索引,并以这两个索引为矩阵的索引,向矩阵中添加了新信息: int dist = convertToInt (distSt
问题内容: 我想使用scipy计算矩阵的数学等级。最明显的函数是计算数组的维数(即标量的维数为0,矢量为1,矩阵为2等)。我知道该模块具有此功能,但是我想知道这样的基本操作是否内置在某个矩阵类中。 这是一个明确的示例: 这给出了维度,我正在寻找的答案。 问题答案: Numpy提供:
问题内容: 我目前正在将数据读入如下所示的数据框中。 我想根据此数据创建一个欧几里得距离矩阵,该矩阵显示所有城市对之间的距离,因此我得到一个结果矩阵,如下所示: 我的实际数据框中还有更多城市和坐标,因此我需要能够以某种方式遍历所有城市对并创建一个距离矩阵,就像上面显示的那样,但是我不确定如何配对所有城市一起引用并应用欧几里德距离公式?任何帮助,将不胜感激。 问题答案: 我认为您对distance_
问题内容: 使用SciPy / Numpy在Python中连接稀疏矩阵的最有效方法是什么? 在这里,我使用以下内容: 我想在回归中使用两个预测变量,但是当前格式显然不是我想要的格式。是否有可能获得以下信息: 它太大,无法转换为深格式。 问题答案: 您可以使用来连接行数相同的稀疏矩阵(水平串联): 同样,您可以用于将具有相同列数的稀疏矩阵进行串联(垂直串联)。 使用或将创建带有两个稀疏矩阵对象的数组
我有一个用户的口味表: 我有电影类型内容表: 我正在尝试获取每个用户的偏好向量,并获取其与电影内容的相似性度量,以便通过点积推荐最偏好的电影: 为了计算距离,我首先通过以下方式标准化了用户的偏好表: 我不明白为什么规范化后表示不同的偏好?例如,第三个值和第五个值都是,但在标准化后,我得到了和,或者最大值转换为,这在点积之后给出的相似性值较小。 在计算点积之前对数据进行规范化是否正确?如果是,我做得