【发布时间】:2014-03-18 07:16:39
【问题描述】:
我使用来自 scikit-learn 库的 DBSCAN 实现,但得到了奇怪的结果。 估计的集群数量随着参数 MinPts (min_samples) 的增加而增加,根据我对算法的理解,这不应该发生。
这是我的结果:
Estimated number of clusters:34 eps=0.9 min_samples=13.0
Estimated number of clusters:35 eps=0.9 min_samples=12.0
Estimated number of clusters:42 eps=0.9 min_samples=11.0 <- strange result here
Estimated number of clusters:37 eps=0.9 min_samples=10.0
Estimated number of clusters:53 eps=0.9 min_samples=9.0
Estimated number of clusters:63 eps=0.9 min_samples=8.0
我是这样使用 scikit-learn 的:
X = StandardScaler().fit_transform(X)
db = DBSCAN(eps=eps, min_samples=min_samples, algorithm='kd_tree').fit(X)
X 是一个包含约 20 万个 12 维点的数组。
这可能是什么问题?
【问题讨论】:
-
您可能想看看 OPTICS(not 在 python 中可用。您在 Google 中找到的 python OPTICS 实现是不正确的;本质上是它的DBSCAN 再次)。它的工作方式类似于 DBSCAN,但您不必选择 epsilon。 ELKI 具有良好的 OPTICS 实现,具有索引支持。
标签: python cluster-analysis scikit-learn