问题标签 [hierarchical-clustering]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2867 浏览

python - Python 中的 iGraph:VertexDendrogram 对象和 VertexClustering 对象之间的关系

在 Python 中使用 iGraph 的社区检测函数 community_fastgreedy(),得到了一个 VertexDendrogram 对象,我们称之为 V。然后使用 V.as_clustering() 从树状图中得到一个 VertexClustering 对象。我知道社区是聚集在一起的,因此模块性最大化,但我认为树状图对象一直在合并,所以很难在树状图上看到社区。

我的问题是: V.as_clustering() 的输出如何对应于树状图中社区之间的距离?

换句话说,每个社区都有一个代表编号(例如 Community [0]、Community [2]),那么该编号如何对应于树状图上的位置?当树状图合并到最大化模块化的级别时,社区 0 和社区 1 是否彼此相邻,社区 12 与社区 0 的距离是否比社区 3 更远?

如果不是,那么 as_clustering 函数如何决定输出的顺序(每个社区的数量)?

提前致谢。

0 投票
1 回答
973 浏览

cluster-analysis - spss中的层次聚类输出以确定没有聚类?

我在 SPSS 中对我的 100 条记录数据集应用了分层(凝聚)聚类。该规则说,'距离系数使较大的混乱点决定了集群的数量。

公式:没有案例 - 肘部步骤 = 没有集群我正在关注本教程“ http://www.mvsolution.com/wp-content/uploads/SPSS-Tutorial-Cluster-Analysis.pdf ”。问题是在我的输出中距离系数没有更大的跳跃那么我如何从中确定 k 的值?

当我计算距离系数的变化时,它出来了:

640-609= 31

671-640=31

711-671=40

755-711=44

800-755=45

846-800=46

900-846=54

962-900=62

1025-962=63

1091-1025=66

1160-1091=69

1233-1160=73

1305-1233=72

1379-1305=74

1460-1379=81

1543-1460=83

1630-1543=87

1728-1630=98

我需要 k 的值来应用 kmeans..

0 投票
1 回答
2465 浏览

opencv - OpenCV 2.4.5:FLANN 和分层聚类

我最近开始将应用程序移植到运行 OpenCV 2.4.5 的新平台。

我使用 OpenCV 的 FLANN 实现进行层次聚类的部分代码不再编译。

代码如下:

我得到的错误(在 Eclipse 中)是 cv::flann::hierarchicalClustering 的参数无效,并且没有满足该函数的候选者。

有人可以解释一下我突然似乎错误地调用了这个方法吗?

非常感谢您的帮助。

0 投票
3 回答
5196 浏览

scipy - 使用 SciPy 如何获得 k= 的聚类?进行层次聚类

所以我使用 fastcluster 和 SciPy 来进行凝聚聚类。我可以做得到dendrogram聚类的树状图。我可以fcluster(Z, sqrt(D.max()), 'distance')为我的数据获得一个很好的聚类。如果我想手动检查树状图中说 k=3(集群)的区域,然后我想检查 k=6(集群)怎么办?如何在树状图的特定级别获得聚类?

我看到所有这些函数都有公差,但我不明白如何从公差转换为集群数。我可以通过链接 (Z) 并逐步将集群拼凑在一起,使用简单的数据集手动构建集群,但这对于大型数据集并不实用。

0 投票
1 回答
743 浏览

java - 键值对的聚类

我有这个问题。我有一组非常大的键值对(以百万计),其中某个唯一 id 作为键,一个字符串作为值(对于 2 个或更多键,字符串可能完全相同)。我必须将这些键值对组合在一起,因为第 1 组包含一些 id 字符串对,第 2 组包含一些其他对等。分组需要根据字符串之间的相似性进行,这些字符串实际上是这些对的值。我已经在这些字符串之间实现了 Levenshtein 距离,并将距离小于阈值距离的对组合在一起。我用传统的(非常糟糕的)方式实现了它:将每个字符串相互比较。

我需要一些关于如何优化它的提示。我可以在 Hadoop 中使用 Map-Reduce 将键值对组合在一起吗?我认为 map 和 reduce 函数的输入是单独的和独立的,因此不能“分组”在一起。这是一个k-means聚类问题吗?你能推荐一些其他更快更有效的技术吗?谢谢。

0 投票
1 回答
465 浏览

cluster-analysis - 在自定义对象上使用 ELKI 并理解结果

我正在尝试在我的程序中使用ELKI 的层次聚类的 SLINK 实现

我有一组需要集群的对象(我自己的类型)。为此,我在聚类之前将它们转换为特征向量。

这就是我目前如何让它运行并产生一些结果(代码在 Scala 中):

现在,结果是 aClustering包含 type 的元素Model。我可以输出它们,但我不知道如何理解这个结果,特别是因为SLINK返回的模型类型DendrogramModel似乎不可参数化。

具体来说,如何将结果链接回我的原始元素(我featureVectors之前创建变量的元素)?

我假设我需要创建某种自定义模型,或者通过初始化和执行算法以某种方式维护与原始元素的链接以从结果中检索。不过,我找不到从哪里开始。

我知道不鼓励将 ELKI 嵌入到自己的程序中。但是,似乎以其他方式调用 ELKI 并没有什么不同:我需要在程序运行期间对结果进行聚类并将结果映射回我的对象​​。

0 投票
0 回答
220 浏览

python - 用python聚类文本

我决定玩一些相似性和聚类文本。

我已经创建了相似性的 tf-idf 和 symmatrix 矩阵。现在我想实现一些聚类成组的东西。

我进行了一项研究,发现了 hcluster 和 k-means 库。

其中哪一个在准确性方面更好?即使没有现成的库,您是否知道更好的方法。如果我知道算法,我可以编写代码。

此外,这种方式是 O(n^2)。如果我想牺牲一点准确性来赢得计算时间,你有什么建议吗?

0 投票
1 回答
46196 浏览

r - R 中热图/聚类默认值的差异(热图与热图.2)?

我正在比较两种在 R 中使用树状图创建热图的方法,一种是made4's heatplot,另一种是gplotsof heatmap.2。适当的结果取决于分析,但我试图理解为什么默认值如此不同,以及如何让两个函数给出相同的结果(或高度相似的结果),以便我理解所有的“黑盒”参数进入这个。

这是示例数据和包:

用 heatmap.2 对数据进行聚类给出:

在此处输入图像描述

使用heatplot给出:

在此处输入图像描述

最初的结果和缩放比例非常不同。heatplot在这种情况下,结果看起来更合理,所以我想了解要输入哪些参数heatmap.2才能让它做同样的事情,heatmap.2因为我想使用其他优点/功能,因为我想了解缺少的成分。

heatplot使用具有相关距离的平均链接,因此我们可以将其输入heatmap.2以确保使用类似的聚类(基于:https ://stat.ethz.ch/pipermail/bioconductor/2010-August/034757.html )

导致: 在此处输入图像描述

这使得行侧树状图看起来更相似,但列仍然不同,尺度也是如此。似乎heatplot默认情况下以某种方式缩放列,默认情况下heatmap.2不会这样做。如果我向 heatmap.2 添加行缩放,我得到:

在此处输入图像描述

这仍然不相同,但更接近。我怎样才能重现heatplot's 结果heatmap.2?有什么区别?

edit2:似乎一个关键的区别是heatplot用行和列重新调整数据,使用:

这就是我要导入到我对heatmap.2. 我喜欢它的原因是因为它使低值和高值之间的对比度更大,而只是传递zlimheatmap.2被简单地忽略了。如何在保留沿列的聚类的同时使用这种“双重缩放”?我想要的只是增加对比度:

heatplot(..., dualScale=TRUE, scale="none")

与您获得的低对比度相比:

heatplot(..., dualScale=FALSE, scale="row")

对此有什么想法吗?

0 投票
0 回答
2989 浏览

d3.js - D3中层次聚类的树状图

我对 D3 很陌生,所以如果这是一个非常基本的问题,我深表歉意。我希望实现一个显示层次聚类算法结果的树状图。这种布局与我能够找到的示例有一个主要区别:除了树的叶子之外,节点没有任何身份,而只是在相对于它们的相似性的特定高度连接子树。

例如看:

http://r.789695.n4.nabble.com/file/n2293207/Dendrogram.jpeg

http://bl.ocks.org/mbostock/4063570相比,此树状图不具有“n 部分性质”(为每个节点级别定义的层)。

因此,问题是如何定义具有任意子树连接位置的树状图?

谢谢

托马斯

编辑:

它似乎没有预期的那么困难,也不需要开发新的布局。在我的输入数据中,我包含了一个带有计算出的连接高度的附加参数。一个示例 json 文件将是这样的:

然后,在计算节点对象时,使用 map 转换 y 值:

其中 cluster 是您的集群布局对象,而 scale 是树状图高度的合适比例。

0 投票
1 回答
943 浏览

matlab - matlab中单元格数组的树状图

我想要这个数据的树状图:

第 1 至 5 列

第 6 至 7 列

我在matlab中使用代码:

但它给出了这个错误:

使用链接时出错(第 137 行)

第一个输入似乎不是距离矩阵,因为它的大小与 PDIST 函数的输出不兼容。数据矩阵输入必须多于一行。

有什么问题
,我希望输出是间隔。是树状图输出间隔吗?