親和力傳播#

sklearn.cluster.affinity_propagation(S, *, preference=None, convergence_iter=15, max_iter=200, damping=0.5, copy=True, verbose=False, return_n_iter=False, random_state=None)[來源]#

執行資料的親和力傳播分群。

請參閱使用者指南以瞭解更多資訊。

參數:
S類陣列,形狀為 (n_samples, n_samples)

點之間相似度的矩陣。

preference類陣列,形狀為 (n_samples,) 或浮點數,預設值=None

每個點的偏好 - 偏好值較大的點更有可能被選為範例。範例的數量,即群集的數量,會受到輸入偏好值的影響。如果偏好未作為引數傳遞,則會將其設定為輸入相似度的中位數(導致適量的群集)。對於較少的群集數量,可以將其設定為相似度的最小值。

convergence_iter整數,預設值=15

估計群集數量沒有變化且停止收斂的迭代次數。

max_iter整數,預設值=200

最大迭代次數。

damping浮點數,預設值=0.5

0.5 到 1 之間的阻尼係數。

copy布林值,預設值=True

如果 copy 為 False,則親和力矩陣會由演算法就地修改,以提高記憶體效率。

verbose布林值,預設值=False

詳細程度。

return_n_iter布林值,預設值=False

是否傳回迭代次數。

random_state整數、RandomState 實例或 None,預設值=None

偽隨機數字產生器,用於控制起始狀態。在函式呼叫中使用整數來獲得可重現的結果。請參閱詞彙表

0.23 版新增: 此參數先前被硬式編碼為 0。

傳回值:
cluster_centers_indices形狀為 (n_clusters,) 的 ndarray

群集中心的索引。

labels形狀為 (n_samples,) 的 ndarray

每個點的群集標籤。

n_iter整數

執行的迭代次數。只有在 return_n_iter 設定為 True 時才會傳回。

注意事項

有關使用範例,請參閱親和力傳播分群演算法示範。您也可以查看視覺化股票市場結構

當演算法不收斂時,如果存在任何範例/群集,它仍會傳回 cluster_center_indices 和標籤的陣列,但它們可能退化,應謹慎使用。

當所有訓練樣本都具有相同的相似度和相同的偏好時,群集中心和標籤的分配取決於偏好。如果偏好小於相似度,則會傳回單一群集中心和每個樣本的標籤 0。否則,每個訓練樣本都會成為自己的群集中心並被指派唯一的標籤。

參考文獻

Brendan J. Frey 和 Delbert Dueck,“透過在資料點之間傳遞訊息進行分群”,《科學》2007 年 2 月

範例

>>> import numpy as np
>>> from sklearn.cluster import affinity_propagation
>>> from sklearn.metrics.pairwise import euclidean_distances
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...               [4, 2], [4, 4], [4, 0]])
>>> S = -euclidean_distances(X, squared=True)
>>> cluster_centers_indices, labels = affinity_propagation(S, random_state=0)
>>> cluster_centers_indices
array([0, 3])
>>> labels
array([0, 0, 0, 1, 1, 1])