Affinity Propagation(sklearn) - 奇怪的行为

时间:2015-06-14 13:25:17

标签: scikit-learn cluster-analysis

尝试将亲和力传播用于简单的群集任务:

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 个答案:

答案 0 :(得分:4)

相信这是因为你的问题本质上是不适合的(你将许多相同的观点传递给试图找到不同点之间相似性的算法)。 AffinityPropagation正在进行矩阵数学运算,你的相似性矩阵(全为零)是彻底退化的。为了不出错,执行adds a small random matrix到相似度矩阵,防止算法在遇到两个相同点时退出。