DBSCAN 聚类 Python - 聚类词



我一直在使用 KMean 从一组行中提取集群,我对结果不是很印象深刻,我想尝试 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))

您无法直接控制 DBSCAN 生成的集群数量。在给定的密度水平下,它产生尽可能多的;最好通过改变 epsilon 来完成。

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

由于DBSCAN簇可以是任意形状的,因此没有有意义的"质心",如k-means,你可以解释为"单词"(但通常这种解释无论如何都是好的)。

请阅读维基百科文章和DBSCAN文献以获取更多详细信息。

最新更新