我在 Python 中运行 DBSCAN 算法的数据集(建模非常类似于http://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html并作为熊猫数据框加载),总共有大约 300 万个数据点,跨越 31 天。此外,我每天进行密度聚类以查找异常值,因此
db = DBSCAN(eps=0.3, min_samples=10).fit(data)
每次通过时只需运行一天的数据点即可。我在任何一天拥有的最小/最大点是 15809 和 182416。我尝试删除变量,但该过程在 DBSCAN 集群阶段被终止。
O(n log n)
无论我在哪里运行它,这显然都会膨胀。我知道没有办法预先指定“标签”或集群的数量 - 还有什么是最好的?此外,从优化的角度来看,这些数据点的某些值将是准确的(将这些视为重复的聚类点)——我可以使用这些信息在馈送到 DBSCAN 之前处理数据吗?
我在 DBSCAN 之前阅读了关于使用“树冠预聚类”来压缩数据的线程(注意这种方法在计算上同样昂贵)——我可以使用类似的东西来预处理我的数据吗?或者“并行 DBSCAN”怎么样?