我修改了Cluster comparison脚本以在群集输出上计算silhouette_score
。
我添加了这一行:
sil = silhouette_score(X, y_pred, metric='euclidean') if len(np.unique(y_pred)) > 1 else float('NaN')
并修改plt.text()
行以显示子图中的sil
值:
txt = 'sil={:.3f}\n{:.2f}s'.format(sil,(t1 - t0))
plt.text(.99, .01, txt, transform=plt.gca().transAxes, size=15, horizontalalignment='right')
这就是我得到的:
查看第3行,列为MeanShoft和DBSCAN。聚类是相同的,但DBSCAN的轮廓得分显着降低。怎么样?
由于这个问题与编程错误无关,请将其移至统计数据吗?
答案 0 :(得分:2)
简而言之,聚类不一样。如果您在DBSCAN图中仔细查看非常,您会看到蓝色群集左下角有一个未分配给任何群集的异常值 - 它显示为黑点。
请注意,轮廓分数假定所有点都已分配给群集,因此可能无法给出您期望的答案。在这种情况下,未分配给任何群集的单个点足以使轮廓分数产生显着差异。