【发布时间】: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