【问题标题】:Affinity Propagation (sklearn) - strange behaviorAffinity Propagation (sklearn) - 奇怪的行为
【发布时间】: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]

我错过了什么?

谢谢

【问题讨论】:

    标签: scikit-learn cluster-analysis


    【解决方案1】:

    相信这是因为您的问题本质上是不适定的(您将许多相同的点传递给试图找到不同点之间相似性的算法)。 AffinityPropagation 在幕后进行矩阵数学运算,并且您的相似度矩阵(全为零)非常退化。为了不出错,对相似度矩阵实现adds a small random matrix,防止算法遇到两个相同点时退出。

    【讨论】:

      猜你喜欢
      • 2020-01-26
      • 2013-03-23
      • 2016-06-16
      • 2018-04-19
      • 2022-01-20
      • 2021-08-13
      • 2021-06-26
      • 2019-08-09
      • 1970-01-01
      相关资源
      最近更新 更多