我一直在寻找 3 维点的 DBSCAN 实现,但运气不佳。有谁知道我处理这个问题的图书馆或有这方面的经验吗?我假设 DBSCAN 算法可以处理 3 个维度,方法是将 e 值设为半径度量,并将点与点之间的距离设为欧氏分离。如果有人尝试实现此方法并愿意分享,我们也将不胜感激,谢谢。
最佳答案
您可以将 sklearn 用于 DBSCAN。这是一些对我有用的代码-
from sklearn.cluster import DBSCAN
import numpy as np
data = np.random.rand(500,3)
db = DBSCAN(eps=0.12, min_samples=1).fit(data)
labels = db.labels_
from collections import Counter
Counter(labels)
我得到的输出是-
Counter({1: 342, 10: 30, 31: 13, 13: 11, 30: 10, 24: 5, 29: 5, 2: 4, 18: 4,
19: 4, 28: 4, 49: 4, 3: 3, 17: 3, 23: 3, 32: 3, 7: 2, 9: 2, 12: 2, 14: 2, 15: 2,
16: 2, 20: 2, 21: 2, 26: 2, 39: 2, 41: 2, 46: 2, 0: 1, 4: 1, 5: 1, 6: 1, 8: 1, 11:
1, 22: 1, 25: 1, 27: 1, 33: 1, 34: 1, 35: 1, 36: 1, 37: 1, 38: 1, 40: 1, 42: 1,
43: 1, 44: 1, 45: 1, 47: 1, 48: 1, 50: 1, 51: 1, 52: 1, 53: 1, 54: 1, 55: 1})
因此,聚类识别了 55 个聚类,每个聚类中的点数如上所示。
关于Python:3 维空间中的 DBSCAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26246015/