我在scikit-learn
python模块中的DBSCAN算法上测试了我的图像集。相似度计算还有其他选择:
# Compute similarities
D = distance.squareform(distance.pdist(X))
S = 1 - (D / np.max(D))
加权度量或类似的东西我可以尝试,例如?
最佳答案
存在DBSCAN的概括,称为“广义DBSCAN”。
实际上,对于DBSCAN,您甚至都不需要距离。这就是为什么首先计算相似矩阵实际上没有意义的原因。
您所需要做的就是谓词“ getNeighbors”,该谓词计算您认为是邻居的对象。
请参阅:在DBSCAN中,除了测试对象是否为邻居之外,实际上并未使用距离。因此,您所需要做的只是这个布尔决策。
您可以尝试以下方法:用全1初始化矩阵。
对于您认为与您的应用程序相似的任何两个对象(在不了解您的应用程序和数据的情况下,我们无法为您提供很多帮助),请用0填充相应的单元格。
然后以epsilon = 0.5运行DBSCAN,显然DBSCAN会将所有0视为邻居。
关于python - DBSCAN中的替代相似性度量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14854243/