Python DBSCAN中的替代相似性度量?

Python DBSCAN中的替代相似性度量?,python,scikit-learn,cluster-analysis,data-mining,dbscan,Python,Scikit Learn,Cluster Analysis,Data Mining,Dbscan,我在python模块中的DBSCAN算法上测试了我的图像集。相似性计算有多种选择: # Compute similarities D = distance.squareform(distance.pdist(X)) S = 1 - (D / np.max(D)) 一个加权度量或类似的东西,我可以试试,例如?你可以使用任何你喜欢的相似矩阵。它只需要基于一个有效距离(对称、半正定)。存在一个DBSCAN的推广,称为“广义DBSCAN” 实际上,对于DBSCAN,你甚至不需要距离。这就是为什么首先计

我在python模块中的DBSCAN算法上测试了我的图像集。相似性计算有多种选择:

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

一个加权度量或类似的东西,我可以试试,例如?

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

存在一个DBSCAN的推广,称为“广义DBSCAN”

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

你需要的是一个谓词“GETBealNosits”,它将你认为是邻居的对象计算出来。 请参阅:在DBSCAN中,距离并不是真正使用的,只是用来测试对象是否是邻居。所以你只需要这个布尔决定

您可以尝试以下方法:使用所有1初始化矩阵。 对于任何两个对象,<强>你认为类似于你的应用<强>(我们不能帮助你很多,不知道你的应用程序和数据),用0填充相应的单元格。
然后用EpSimon=0.5运行dBSCAN,显然dBSCAN将所有的0作为邻居考虑。

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

我不知道其他相似性矩阵,有什么例子吗?或者列出我可以选择的位置?稀疏正向量(例如词频)之间的余弦相似性、热核或RBF核、基于l1(曼哈顿)范数而非欧几里德范数的相似性……实际上不,它不需要是有效的距离/度量。DBSCAN只需要一个二进制“isNeighbor”信息。从技术上讲,没有对称性要求。您可以使用随机矩阵,DBSCAN仍然可以工作。(但适当距离的结果通常更好)@博士后,你需要找出什么是“相似的”为您的特定任务!实际上,
DBSCAN
估计器想要的是距离,而不是相似性。