親和力傳播#
- 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])