sklearn:相同聚类的轮廓得分不同

时间:2015-08-01 13:04:54

标签: python scikit-learn cluster-analysis

我修改了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')

这就是我得到的:

1

查看第3行,列为MeanShoft和DBSCAN。聚类是相同的,但DBSCAN的轮廓得分显着降低。怎么样?

由于这个问题与编程错误无关,请将其移至统计数据吗?

1 个答案:

答案 0 :(得分:2)

简而言之,聚类不一样。如果您在DBSCAN图中仔细查看非常,您会看到蓝色群集左下角有一个未分配给任何群集的异常值 - 它显示为黑点。

请注意,轮廓分数假定所有点都已分配给群集,因此可能无法给出您期望的答案。在这种情况下,未分配给任何群集的单个点足以使轮廓分数产生显着差异。