【发布时间】:2018-02-23 23:28:49
【问题描述】:
我尝试使用预先计算的亲和力矩阵进行聚类,但即使对于简单的情况也不起作用。我尝试了不同的转储参数和对角线的不同值,但没有成功。
下面是例子。
affinities =
[[ 0. -1. -2. -6. -7.]
[-1. 0. -1. -7. -8.]
[-2. -1. 0. -8. -9.]
[-6. -7. -8. 0. -1.]
[-7. -8. -9. -1. 0.]]
我尝试使用 sklearn Affinity Propagation 模块的 fit(..) 方法对矩阵进行聚类:
import sklearn.cluster
clusterer = sklearn.cluster.AffinityPropagation(affinity='precomputed', damping=0.9, verbose=True)
result = clusterer.fit(affinities)
from pprint import pprint
pprint(vars(result))
但是没有找到簇(请注意结果显然应该是[0,0,0,1,1]):
Converged after 23 iterations.
{'affinity': 'precomputed',
'affinity_matrix_': array([[ 0., -1., -2., -6., -7.],
[-1., 0., -1., -7., -8.],
[-2., -1., 0., -8., -9.],
[-6., -7., -8., 0., -1.],
[-7., -8., -9., -1., 0.]]),
'cluster_centers_indices_': array([0]),
'convergence_iter': 15,
'copy': True,
'damping': 0.9,
'labels_': array([0, 0, 0, 0, 0]),
'max_iter': 200,
'n_iter_': 24,
'preference': None,
'verbose': True}
【问题讨论】:
-
亲和的负值是一个不寻常的选择,有时会导致问题。
-
那么亲和矩阵的优选形式是什么? sklearn 的官方文档不包含此类信息。
-
通常它是一个程度 >= 相关对象的程度,例如正边的权重。
标签: python scikit-learn cluster-analysis