我在使用sklearn的AffinityPropagation时看到了一些奇怪的东西。我有一个4 x 4的数字-这基本上是亲和力得分。sim[i,j]的亲和力得分为[i,j]。现在,当我输入affinityPropaction函数时,我总共得到4个标签。在
下面是一个矩阵较小的类似示例:In [215]: x = np.array([[1, 0.2, 0.4, 0], [0.2, 1, 0.8, 0.3], [0.4, 0.8, 1, 0.7], [0, 0.3, 0.7, 1]]
.....: )
In [216]: x
Out[216]:
array([[ 1. , 0.2, 0.4, 0. ],
[ 0.2, 1. , 0.8, 0.3],
[ 0.4, 0.8, 1. , 0.7],
[ 0. , 0.3, 0.7, 1. ]])
In [217]: clusterer = cluster.AffinityPropagation(affinity='precomputed')
In [218]: f = clusterer.fit(x)
In [219]: f.labels_
Out[219]: array([0, 1, 1, 1])
这表明(根据Kevin的说法),第一个样本(第0个索引行)本身就是一个簇(cluster#0),其余样本则在另一个簇(cluster#1)中。但是,我仍然不理解这个输出。这是什么样的样品?成员是什么?我想让一组对(I,j)分配给一个集群,另一组对分配给另一个集群,依此类推。在
它看起来像4个样本x 4个特征矩阵,我不想要。这就是问题所在吗?如果是这样的话,如何将其转换为一个漂亮的4样本x 4样本亲和力矩阵?在
谢谢!在