我在scikit-learn
python模块中的DBSCAN算法上测试我的图像集。有相似性计算的替代方案:
# Compute similarities
D = distance.squareform(distance.pdist(X))
S = 1 - (D / np.max(D))
加权衡量或类似的事情我可以尝试,例子?
答案 0 :(得分:3)
存在DBSCAN的概括,称为“广义DBSCAN”。
实际上,对于DBSCAN,你甚至不需要距离。这就是为什么首先计算相似性矩阵实际上没有意义。
你需要的只是一个谓词“getNeighbors”,它计算你认为是邻居的对象。
参见:在DBSCAN中,距离并未真正使用,除了测试对象是否是邻居。所以你需要的就是这个布尔决定。
您可以尝试以下方法:使用全1来初始化矩阵。 对于任何两个目标你认为你的应用程序类似(我们无法帮助你,在不知道你的应用程序和数据的情况下),用0填充相应的单元格。 然后使用epsilon = 0.5运行DBSCAN,显然DBSCAN会将所有0视为邻居。
答案 1 :(得分:0)
您可以使用您喜欢的任何相似性矩阵。它只需要基于有效距离(对称,正半正定)。
答案 2 :(得分:0)
我相信DBSCAN估算器需要距离而不是相似之处。但是,当涉及到字符串时,它将需要一个相似性矩阵,它甚至可以是一行代码,用于匹配两个字符串之间的相等性。因此,它取决于您如何使用相似性矩阵并区分邻居和非邻居对象。