【问题标题】:Finding clusters with difference in value <0.1 in dbscan在 dbscan 中查找值差异 <0.1 的集群
【发布时间】:2019-09-19 00:07:35
【问题描述】:

您好,我需要对值小于或等于 0.1 的点进行聚类。我的用例是这样的。

0     1649.500000
1        0.864556
2        0.944651
3        0.922754
4        0.829045
5        0.838665
6        1.323263
7        1.397340
8        1.560655
..       .......
27       1.315072
28       1.593657
29       1.222322
...      .......
...      .......
2890     0.151328
2891     0.149963
2892     0.149285
2893     0.146318
2894     0.147668
2895     0.141159

这里我需要对以下几点进行聚类。我在 dbscan 中给出了如下数据

X = X.reshape(-1,1)
db = DBSCAN(eps=0.1,min_samples=3,metric='manhattan',n_jobs=-1).fit(X)
labels = db.labels_

现在当我打印与以下点对应的点时

for i in range(n_clusters_):
        print("Cluster {0} include {1}".format(i,list(np.where(labels==i))))

我的输出如下:

Cluster 0 include [array([   1,    2,    3, ..., 2893, 2894, 2895])]

如果您可以看到我提供的上述数据,第 1 个位置有 0.8 ...,第 2895 个位置有 0.141...但是当我给出 eps =0.1 和 metric="manhattan"(其中取绝对差)。我在这里遗漏了什么,我应该使用其他距离吗?我对 eps 的理解是否错误?我应该怎么做才能让它按照我的意愿聚集。

【问题讨论】:

    标签: python machine-learning cluster-analysis distance dbscan


    【解决方案1】:

    这正是DBSCAN 的工作方式。

    DBSCAN 是一种基于密度的聚类算法。简而言之,它从一个随机点p 开始,如果在epsilon 周围epsilon 范围内有min_points 点,那么它就成为一个核心点。如果两个核心点在epsilon 范围内,它们将被放在同一个集群中。

    这意味着:彼此相距较远(例如,大于 epsilon)的两个点可以通过其间的其他核心点连接,从而属于同一个簇

    您选择的 epsilon 和 min_points 参数似乎会导致一个大集群(点 0 除外)

    【讨论】:

    • 但是点 1 的值是 0.8,点 2895 是 1.14。每股收益大于 0.1! ryt?
    • @RAMSHANKERG 看看this illustration from wikipedia,它很好地说明了两个点如何在同一个簇中,而它们之间的距离大于 eps
    • 哦,我明白了!谢谢!那我怎样才能对密度相似的点进行聚类呢?!
    • @RAMSHANKERG 来回答这个问题,我们需要更多信息,即您期望的输出。到目前为止,我知道您想要最大直径为 0.1 的集群。如果是这种情况,您可能必须编写自己的聚类算法,因为 sklearn 中没有实现任何可比的。
    【解决方案2】:

    DBSCAN epsilon 不是最大簇半径,而是步长大小。集群是通过许多这样的步骤构建的,因此距离可以更大。

    您正在寻找的可能是领导者集群。一种较旧且更简单的算法,但并未特别广泛使用 - 聚类的目的是了解数据的结构,而不是强加预定义的结构。

    既然您的数据是一维的,为什么不直接对数据进行排序,然后确定您喜欢的阈值。或者只是在您想要的任何阈值处进行切割,例如 0、0.1、0.2、0.3,使用简单的 x &lt; 0.1 掩码,一个 numpy 内置功能。

    【讨论】:

      猜你喜欢
      • 2020-08-27
      • 2014-05-22
      • 2019-08-31
      • 2016-02-28
      • 2018-09-15
      • 2013-01-15
      • 2018-10-11
      • 2013-11-26
      • 2016-06-22
      相关资源
      最近更新 更多