DBSCAN
针对多核处理优化的 DBSCAN 集群。
主意
如果任意维度上两点的距离大于eps ,则总距离大于eps 。
计算每个维度的方差(并行),找到并存储具有最大方差的维度
按方差最大的维度排序
并行构建邻域图(欧几里德距离)
滑动排序的数据,从最低到最高。 执行滑动直到neighbor_value <= curr_value + eps
使用数组/索引来存储邻居列表; ConcurrentLinkedQueue 持有密度可达点。
使用 DFS(深度优先搜索)查找集群
注意:解决方案使用并行流,因此需要 Java 8
解释其工作原理的示例
考虑以下几点:
Name => { X, Y }
"0" => { 2, 4 }
"1" => { 7, 3 }
"2" => { 3, 5 }
"3" => { 5, 3 }
"4" =>
2022-05-05 18:55:07
7KB
Java
1