使用 DBSCAN 算法的数据图没有意义

数据挖掘 聚类 可视化 机器学习模型 绘图 数据库扫描
2022-02-18 19:52:37

我正在对我的数据使用聚类。由于 DBSCAN 算法还会告诉我可以使用的集群的估计值,因此我使用了 DBSCAN。我已经尝试过eps=[0.123,1,2]and min_smaples=[2,10,...60]下面代码中的 print satatement 打印 714,它等于数据样本(行)的数量。代码如下所示:

dbscan = DBSCAN(eps=1, min_samples = 4)
clusters = dbscan.fit_predict(df)
print(len(clusters))
plt.scatter(df.iloc[:, 0], df.iloc[:, 1], c=clusters, cmap="plasma")
plt.xlabel("Feature 0")
plt.ylabel("Feature 1")

一些不同min_samples的示例图如下所示:

EPS=1,MIN_SAMPLES=2 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

上述图的参数在下面以相同的模式给出。

  1. EPS=1,MIN_SAMPLES=2,EPS=1,MIN_SAMPLES=10
  2. EPS=1,MIN_SAMPLES=20,EPS=1,MIN_SAMPLES=40

从聚类的角度来看,这些图对我来说都没有意义。由此,我不得不得出结论,我不能对给定数据使用聚类,或者我做错了。所以,我需要帮助来了解上述情节的奇怪外观。

任何帮助表示赞赏

2个回答

不要试图在视觉上确认它。

您仅在两个维度上绘制聚类结果,并且您希望所有信息都在这两个维度中。这是非常不可能的。如果您绘制 3 个维度,您会看到更多的可分离性,并且会更有意义。在任何情况下,您都需要一个指标,例如Silhouette来告诉您集群的好坏。如果您已经了解自己的功能,则可视化只是一个健全性检查。

不要试图通过蛮力找到参数。

相反,分析您的数据。minpts 的选择是由应用程序驱动的——你的数据有多嘈杂,一个点需要多少点才被认为是重要的。基于此,您可以根据 k 距离图选择 epsilon。

当您有多个维度时,请尝试将您的数据投影到不同的视图中。

也尝试不同的预处理。您似乎已将数据缩放到 0:1,但这是捕捉相似性的正确缩放比例吗?如果您的距离没有捕捉到相似性,那么 DBSCAN 将无法工作,因为它依赖于您的距离函数......