如何优化亲和力传播结果?

时间:2013-05-23 14:49:59

标签: machine-learning scikit-learn

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

我现在所知道的是我输入了一个“亲和矩阵”(affmat),它是通过将热核转换应用于“距离矩阵”(distmat)来计算的。 distmat是我之前分析步骤的输出。在我获得了关注之后,我通过类似于:

的方式将其传递给算法
af = AffinityPropagation(affinity = 'precomputed').fit(affmat)

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

我已经尝试通过查看Silhouette分数来评估结果,并经常(但不是大多数时间)我得到的分数接近于零或在负范围内,这表明我没有得到“自然分组”的集群。对我来说,这是一个问题。

此外,当我观察一些情节时,我会得到奇怪的聚类模式,例如下面的图像,我清楚地看到3个点的集群,但AP给了我10个:

Visual inspection tells you there's 3 clusters, but AP returns 10

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

Visual inspection won't tell you how many clusters there are, but the clusters look pretty much overlapping

如何确定群集中心的欧氏坐标?我注意到当我输入百分比值(99.2,99.5等)而不是分数值(0.992,0.995等)时,x轴和y轴的比例从[0,1]变为[0,100] (但当然轴的大小适当缩放,以至于我偶尔会得到[88,100]或[92,100]等等。

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

0 个答案:

没有答案