1

我想要做的事情的简单例子:如何根据Python中的相似性或重叠来比较两个群集分组?

比方说,我有3个数据点A,B和C.我运行KMeans聚类在这个数据上,得到2个簇[(A,B),(C)]。然后我对这个数据运行MeanShift集群并获得2个集群[(A),(B,C)]。很显然,这两种聚类方法以不同的方式聚集数据。我希望能够量化这种差异。换句话说,我可以使用什么度量来确定从两种算法获得的两个群集组之间的相似性/重叠百分比?下面是可能被给予分数的范围:

  • 100%的分数[(A,B),(C)][(A,B),(C)]
  • 〜50%的分数[(A,B),(C)][(A),(B,C)]
  • 〜20%的分数[(A,B),(C)][(A,B,C)]

这些分数有点随意,因为我不确定如何衡量两个不同集群分组之间的相似性。请记住,这是一个简化的示例,在实际应用程序中,您可以拥有多个数据点,并且每个群集分组也可以有多个群集。尝试将群集分组与标记的数据分组进行比较时(具有标记的数据时),使用此类度量标准也很有用。

编辑:我有一个想法是将第一个群集组中的每个群集与第二个群集中的每个群集重叠。这将为您提供第一个群集组中的群集的相似性矩阵,以及第二个群集中的群集。但是,我不确定你会用这个矩阵做什么。也许在每一行或每列中取得最高的相似度分数,并对此做些什么?

回答

2

使用评估指标。

许多指标是对称的。例如,adjusted Rand index

值接近1意味着它们非常相似,接近于0是随机的,远小于0意味着一个集群中的每个集群均匀分布在另一个集群中。

2

好吧,确定聚类数量是数据分析中的问题,也是聚类问题本身的不同问题。这个AIC 或Cubic聚类标准有很多标准。我认为,通过scikit-learn,没有选项可以默认计算这两个值,但我知道R中有包。

+0

我不想确定最佳数量的群集,我只是想比较两个不同的群集分组结果,看看它们有多相似。 – Eddy

相关问题