是否可以测试 DBSCAN 聚类算法?如果是,怎么办?

Is Testing the DBSCAN clustering algorithm possible? And if yes, how?

我想使用 DBSCAN clustering algorithm 来检测数据集中的异常值。由于这是一种无监督学习方法,我是否需要将我的数据集拆分为训练数据和测试数据,或者测试 DBSCAN algorithm 是不可能的?出于离群值检测的原因,我应该将整个数据集提供给 DBSCAN model 吗?

如果可以测试 DBSCAN,您能否建议使用 Python 进行测试的方法?

您不需要将数据拆分为测试和训练。但是,如果您希望评估您的模型,您应该从原始数据中获得标记数据样本。还有其他无监督方法,但它们会比较哪种聚类方法相对于您尝试的其他方法(算法或不同的超参数)表现更好。

我建议阅读 - https://scikit-learn.org/stable/modules/clustering.html 2.3.10 节展示了评估聚类模型的各种方法,以及实现它们所需的 sklearn API。

您可以根据您的问题陈述选择最适合您的要求。

让我在这里补充一个重点:

您无法测试无监督学习方法。无监督学习方法的主要思想是定义一个非预定义目标。

机器学习中的监督学习方法 --> train/test or train/dev/test split

无监督学习 --> 无分割

根据您的异常值数据集,还有其他统计方法可以识别异常值:

数量

z 分数

对于离群值检测,使用实际的离群值检测算法而不是 DBSCAN。

DBSCAN 检测到的噪声与异常值不同。例如,如果你的数据都是均匀的随机数据,这应该被认为是 "noise",但其中 none 将是异常值。所有数据均为正常噪声。