我正在尝试将照片(GPS + 时间戳)围绕已知的 GPS 位置进行聚类。
3d 点 = 2d + 时间戳。
例如: 我沿着路走,拍路灯柱的照片,有些很有趣,所以我拍了 10 张照片,有些不是,所以我没有拍。
我想将我的照片集中在灯柱周围,这样我就可以看到拍摄的是哪个灯柱。
我一直在研究 k-means 聚类之类的东西,并且想要一些智能的东西,而不仅仅是将照片拍到最近的路灯柱上。
(我打算用 javascript 为一次处理大约 (2000,500) 个点的客户端应用程序编写代码)
最佳答案
KMeans 聚类确实是一种流行且易于实现的算法,但它有几个问题。
您需要将簇数
N
作为输入提供给他 多变的。现在,因为我假设你不知道你有多少“东西” 想拍照,找到正确的 N。使用迭代 KMeans 或类似的变体只会将问题转移到为多集群分区找到合适的评估函数,这绝不比找到 N 本身更容易。它只能检测线性可分的形状。假设您在凡尔赛宫走来走去,拍了很多外墙的照片。然后你走进去,拍下里面的花园。您获得的两个形状是一个里面有圆盘的雷神,但 KMeans 无法区分它们。
就个人而言,我会选择某种 Density Based Clustering :您仍然需要为算法提供一些变量,但是,由于我们假设空间是欧几里德空间,因此找到它们应该不会花费太多时间。此外,它使您能够区分噪声点和聚类点,并让您以不同的方式对待它们。
此外,它可以区分大多数形状,你不需要事先给出簇的数量。
关于javascript - 寻找一种算法来聚类 3d 点,围绕 2d 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405628/