问题描述
我正在使用密度聚类 (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 个簇。
解决方法
基于库的 example,dbscan.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]],...]