【发布时间】:2016-05-31 09:15:44
【问题描述】:
我在使用 sklearn 中的 AffinityPropagation 时看到一些奇怪的东西。我有一个 4 x 4 numpy ndarray - 这基本上是亲和力分数。 sim[i, j] 的亲和力分数为 [i, j]。现在,当我输入 AffinityPropgation 函数时,我总共得到 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 个索引行)本身就是一个集群(集群 #0),其余样本位于另一个集群(集群 #1)中。但是,我仍然不明白这个输出。这里的样本是什么?成员有哪些?我希望将一组对 (i, j) 分配给一个集群,将另一组对分配给另一个集群,依此类推。
它看起来像一个 4 样本 x 4 特征矩阵......我不想要。这是问题吗?如果是这样,如何将其转换为一个不错的 4-sample x 4-sample 亲和矩阵?
文档 (http://scikit-learn.org/stable/modules/generated/sklearn.cluster.AffinityPropagation.html) 说
fit(X, y=None)
Create affinity matrix from negative euclidean distances, then apply affinity propagation clustering.
Parameters:
X: array-like, shape (n_samples, n_features) or (n_samples, n_samples) :
Data matrix or, if affinity is precomputed, matrix of similarities / affinities.
谢谢!
【问题讨论】:
标签: python scikit-learn