我想知道是否有人比我对 python scikit-learn 包中的 Affinity Propagation 聚类算法的了解更深入?
我现在所知道的是我输入了一个“亲和矩阵”(affmat),它是通过对“距离矩阵”(distmat)应用热核变换来计算的。distmat 是我之前执行的分析步骤的输出。在获得 affmat 之后,我通过执行类似于以下的操作将其传递给算法:
af = AffinityPropagation(affinity = 'precomputed').fit(affmat)
一方面,我很欣赏输入的简单性。另一方面,我仍然不确定我的输入是否正确?
我已经尝试通过查看剪影分数来评估结果,并且经常(但不是大多数情况下)我得到的分数接近于零或处于负数范围内,这表明我没有得到集群'自然分组'。对我来说,这是一个问题。
此外,当我观察一些图时,我得到了奇怪的聚类模式,如下图所示,我清楚地看到了 3 个点簇,但 AP 给了我 10 个:
我还看到其他类似的图表,其中集群重叠很多。:
如何确定聚类中心的欧几里得坐标?我注意到当我输入百分比值(99.2、99.5 等)而不是分数值(0.992、0.995 等)时,x 轴和 y 轴的比例从 [0, 1] 变为 [0, 100] (但当然,轴被适当地缩放,因此我有时会得到 [88, 100] 或 [92, 100] 等等)。
很抱歉这里漫无边际,但我很难理解算法的 python 实现的基础。我已经回到原始论文并阅读了它,但我不知道如何在 scikit-learn 包中对其进行操作以获得更好的聚类。