为了从一组行中提取集群,我一直在使用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))发布于 2017-01-22 19:45:04
您无法直接控制DBSCAN生成多少集群。在给定的密度水平上,它产生的数量尽可能多;这最好通过不同的epsilon来完成。
注意,它还会产生噪声,即一个集群(可能是第一个集群)不是集群,而是不属于任何集群的剩余点。但是,当你简单地放弃这些点时,你的轮廓就变成了假的。
由于DBSCAN集群可能是任意形状的,所以在k中没有有意义的‘质心’--这意味着您可以解释no“word”(但通常这种解释几乎是好的)。
详情请参阅维基百科文章及DBSCAN文献。
https://stackoverflow.com/questions/41793963
复制相似问题