2017-01-22 15 views
-1

Я использую KMeans для извлечения кластеров из набора строк, и я не очень впечатлен результатами, и я хотел попробовать DBSCAN, чтобы узнать, может ли это дать лучшие результаты. Выводит ли DBSCAN кластерные слова как KMeans?DBSCAN Clustering Python - кластерные слова

Я был в состоянии использовать 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)) 

ответ

1

Вы не имеете прямого контроля над тем, как много кластеров DBSCAN производит. Он производит столько, сколько окажется на заданном уровне плотности; что лучше всего сделать путем изменения эпсилона.

Обратите внимание, что она также производит шум , т.е. один кластер (вероятно, первый) является не кластер, но оставшиеся точки, которые не принадлежат ни к одному кластеру. Но когда вы просто отбрасываете эти очки, ваш силуэт становится ложным.

Поскольку кластеры DBSCAN могут быть произвольно сформированы, нет значимого «центроида», как в k, означает, что вы можете интерпретировать «слова» (но часто эта интерпретация вообще не хороша).

Для получения более подробной информации, пожалуйста, прочтите статью & DBSCAN.