给定一个具有正常值和异常值的数据集,是否有任何标准方法可以找到用于实现 DBSCAN 的 epsilon 的标准化值。

Given a dataset with Normal values and outliers, is there any standard way to find a normalised value of epsilon for implementing DBSCAN.

我正在对一些数据进行 DBSCAN 的个人实现,但是当我必须为我必须使用的每种数据集动态地找到 epsilon 时我遇到了问题,因为在实现 DBSCAN 之前 epsilon 的平均值考虑了异常值,因此生成的 epsilon 也具有异常值的影响,这对我来说是有问题的。有什么办法可以解决这个问题吗?

这是计算特定数据集的 epsilon 的代码部分:

xmax = np.max(X,axis = 0)
xmin = np.min(X,axis = 0)
min_max = xmax-xmin
k = 10
eps = (min_max[0]*min_max[1]*k/(len(X)*math.pi))**0.5

我使用了 numpy 模块中的一些函数,例如 max、min。

如果找到合适的 epsilon 值是一个主要问题,那么 真正的 问题可能早于此:您可能一直使用错误的距离度量,或者您可能存在 预处理问题

您的代码看起来很像一种朴素的预处理方法 - 这就是它的工作原理。

另请阅读 DBSCAN 论文。作者在 4.2 节中提出了一种选择 epsilon 的方法,您可以自动执行此操作...

阅读您的评论后,您有以下选择: 1.光学 2.桦木 3.均值漂移算法 4.局部离群因素 5. 最难的,但对你来说是最好的(据我所知):使用神经网络