node.js 中的 DBSCAN 实现

问题描述

我正在使用密度聚类 (https://www.npmjs.com/package/density-clustering)。

我有一个包含 4000 个位置点的数组 - [[long,nat],...]

var clustering = require('density-clustering');
var dbscan = new clustering.DBSCAN();
var clusters = dbscan.run(dataset,50000,600);

无论我向“dbscan.run”提供什么值,cluster 总是返回一个包含 [1,2,3,4....4000] 值的数组。 IE。对于数据集中的 X 个数据点,我得到 X 个簇。

解决方法

基于库的 exampledbscan.run() 调用的返回值是原始 dataset 的索引列表列表(这很有意义)。

要从中获取集群,您必须使用原始数据集将它们映射回来:

const clusters = dbscan.run(dataset,...);
// clusters is now [[id,id,id],[id,...]
const coordinates = clusters.map(clu => clu.map(index => dataset[index]));
// coordinates is now [[[lat,lon],[lat,lon]],...]