1

scikit-learn我在python 模块中使用 DBSCAN 算法测试我的图像集。相似度计算有一些替代方案:

# Compute similarities
D = distance.squareform(distance.pdist(X))
S = 1 - (D / np.max(D))

我可以尝试加权度量或类似的方法,例如?

4

3 回答 3

3

DBSCAN 存在一个泛化,称为“Generalized DBSCAN”。

实际上,对于 DBSCAN,您甚至不需要距离。这就是为什么首先计算相似度矩阵实际上没有意义的原因。

您所需要的只是一个谓词“getNeighbors”,它计算您认为是邻居的对象。

请参阅:在 DBSCAN 中,距离并没有真正使用,除了测试对象是否是邻居。所以你只需要这个布尔决定。

您可以尝试以下方法:使用全 1 初始化矩阵。对于您认为与您的应用程序相似的任何两个对象(在不知道您的应用程序和数据的情况下,我们无法为您提供很多帮助),用 0 填充相应的单元格。然后使用 epsilon = 0.5 运行 DBSCAN,显然 DBSCAN 将将所有 0 视为邻居。

于 2013-02-13T19:39:49.017 回答
0

您可以使用任何您喜欢的相似度矩阵。它只需要基于有效距离(对称,半正定)。

于 2013-02-13T13:39:56.433 回答
0

我相信 DBSCAN 估计器需要距离而不是相似度。但同样,当涉及到字符串时,它需要一个相似度矩阵,它甚至可以是用于匹配两个字符串之间相等性的一行代码。因此,这取决于您如何使用相似度矩阵并区分邻居和非邻居对象。

于 2013-08-26T06:41:18.483 回答