【问题标题】:How can I get clusters from distance matrix, using PHP?如何使用 PHP 从距离矩阵中获取集群?
【发布时间】:2018-05-14 15:02:58
【问题描述】:

我将距离矩阵作为二维数组,如下所示:

所以,我需要在它的帮助下找到元素的集群。我可以做到这一点,使用分层聚类,如 k-means。我在这里找到了这样的例子PHP K-Means

如何将我的二维数组转换为点数组,如本例所示?

$points = [
[80,55],[86,59],[19,85],[41,47],[57,58],
[76,22],[94,60],[13,93],[90,48],[52,54],
[62,46],[88,44],[85,24],[63,14],[51,40],
[75,31],[86,62],[81,95],[47,22],[43,95],
[71,19],[17,65],[69,21],[59,60],[59,12],
[15,22],[49,93],[56,35],[18,20],[39,59],
[50,15],[81,36],[67,62],[32,15],[75,65],
[10,47],[75,18],[13,45],[30,62],[95,79],
[64,11],[92,14],[94,49],[39,13],[60,68],
[62,10],[74,44],[37,42],[97,60],[47,73],
];

【问题讨论】:

  • 您能解释一下如何在数学上转换您的数据吗?这可能对我们有帮助

标签: php arrays matrix k-means hierarchical-clustering


【解决方案1】:

首先:吹毛求疵:k-Means 不是层次聚类算法,有关区别的详细信息,请参阅https://www.quora.com/What-is-the-difference-between-k-means-and-hierarchical-clustering

第二:当您退后一步时,您不想将距离矩阵转换回它的起源点。遗憾的是,您链接的 k-Means 实现只有一个 API,允许您输入原始坐标并假定欧几里得距离,因此您有一些可能性,具体取决于您的要求:

  1. 你从哪里得到距离矩阵?如果可能,请获取原始坐标(并确保距离度量是欧几里德距离)并使用您链接的库。

  2. 覆盖您链接的库中的 Point 类:特别是 getDistanceWith 方法以从您的矩阵中返回值

  3. 如果只需要计算一次集群,使用python和sklearn。这个库正是你想要的。特别是:https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.cluster.hierarchy.linkage.html

  4. 编写您自己的代码:集群是一个相当简单的话题,因此它是一个很好的编码练习。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2018-05-03
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多