DBSCAN聚类Python - 聚类词

时间:2017-01-22 17:26:57

标签: python python-3.x cluster-analysis dbscan

我一直在使用KMeans从一组线中提取簇,我对结果印象不是很好,我想尝试DBSCAN,看看这是否能产生更好的效果。 DBSCAN是否将群集字输出为KMeans?

我能够使用DBSCAN并且能够将群集的数量输出为“3”但是我想知道是什么上下文驱动它来制作'3'群集(我想知道这些词)

这是我的代码段

 db = DBSCAN(eps=0.3, min_samples=10).fit(X)
 core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
 core_samples_mask[db.core_sample_indices_] = True
 labels = db.labels_

 # Number of clusters in labels, ignoring noise if present.
 n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)

 print('Estimated number of clusters: %d' % n_clusters_)

 print("Silhouette Coefficient: %0.3f"% metrics.silhouette_score(X, labels))

2 个答案:

答案 0 :(得分:1)

您无法直接控制DBSCAN生成的群集数量。它产生的数量与给定密度水平下的数量相同;最好通过改变epsilon来完成。

请注意,它还会产生 noise ,即一个群集(可能是第一个)不是群集,但是不属于任何群集的剩余点。但是当你简单地丢弃这些点时,你的轮廓会变得虚假。

由于DBSCAN集群可能是任意形状的,因此没有任何有意义的“质心”。如在k-意味着你可以解释"单词" (但这种解释通常都很好)。

请阅读维基百科文章& DBSCAN文献了解更多细节。

答案 1 :(得分:-1)

首先,您应该清楚为什么使用DBSCAN。用于检测噪声或用于检测密集数据中的簇。如果没有理由你必须首先从文献中找到原因,那么应该尝试应用/使用DBSCAN算法。