1

我想知道是否有人比我对 python scikit-learn 包中的 Affinity Propagation 聚类算法的了解更深入?

我现在所知道的是我输入了一个“亲和矩阵”(affmat),它是通过对“距离矩阵”(distmat)应用热核变换来计算的。distmat 是我之前执行的分析步骤的输出。在获得 affmat 之后,我通过执行类似于以下的操作将其传递给算法:

af = AffinityPropagation(affinity = 'precomputed').fit(affmat)

一方面,我很欣赏输入的简单性。另一方面,我仍然不确定我的输入是否正确?

我已经尝试通过查看剪影分数来评估结果,并且经常(但不是大多数情况下)我得到的分数接近于零或处于负数范围内,这表明我没有得到集群'自然分组'。对我来说,这是一个问题。

此外,当我观察一些图时,我得到了奇怪的聚类模式,如下图所示,我清楚地看到了 3 个点簇,但 AP 给了我 10 个:

目视检查告诉您有 3 个集群,但 AP 返回 10

我还看到其他类似的图表,其中集群重叠很多。:

目视检查不会告诉您有多少集群,但集群看起来非常重叠

如何确定聚类中心的欧几里得坐标?我注意到当我输入百分比值(99.2、99.5 等)而不是分数值(0.992、0.995 等)时,x 轴和 y 轴的比例从 [0, 1] 变为 [0, 100] (但当然,轴被适当地缩放,因此我有时会得到 [88, 100] 或 [92, 100] 等等)。

很抱歉这里漫无边际,但我很难理解算法的 python 实现的基础。我已经回到原始论文并阅读了它,但我不知道如何在 scikit-learn 包中对其进行操作以获得更好的聚类。

4

0 回答 0