Affinity Propagation (sklearn) - 奇怪的行为
Posted
技术标签:
【中文标题】Affinity Propagation (sklearn) - 奇怪的行为【英文标题】:Affinity Propagation (sklearn) - strange behavior 【发布时间】:2015-08-30 01:09:45 【问题描述】:尝试对简单的聚类任务使用相似性传播:
from sklearn.cluster import AffinityPropagation
c = [[0], [0], [0], [0], [0], [0], [0], [0]]
af = AffinityPropagation (affinity = 'euclidean').fit (c)
print (af.labels_)
我得到了这个奇怪的结果: [0 1 0 1 2 1 1 0]
我希望所有样本都在同一个集群中,就像在这种情况下:
c = [[0], [0], [0]]
af = AffinityPropagation (affinity = 'euclidean').fit (c)
print (af.labels_)
这确实将所有样本放在同一个集群中: [0 0 0]
我错过了什么?
谢谢
【问题讨论】:
【参考方案1】:我相信这是因为您的问题本质上是不适定的(您将许多相同的点传递给试图找到不同点之间相似性的算法)。 AffinityPropagation 在幕后进行矩阵数学运算,并且您的相似度矩阵(全为零)非常退化。为了不出错,对相似度矩阵实现adds a small random matrix,防止算法遇到两个相同点时退出。
【讨论】:
以上是关于Affinity Propagation (sklearn) - 奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章
R语言Affinity Propagation+AP聚类实战
Affinity Propagation (sklearn) - 奇怪的行为
将稀疏矩阵与 sklearn Affinity Propagation 结合使用