親和力傳播#
- class sklearn.cluster.AffinityPropagation(*, damping=0.5, max_iter=200, convergence_iter=15, copy=True, preference=None, affinity='euclidean', verbose=False, random_state=None)[原始碼]#
執行親和力傳播分群演算法 (Affinity Propagation Clustering) 於資料上。
詳情請參閱使用者指南。
- 參數:
- dampingfloat,預設值=0.5
阻尼因子,範圍在
[0.5, 1.0)
之間,表示當前值相對於傳入值(權重為 1 - damping)的保留程度。 這是為了避免在更新這些值(訊息)時出現數值震盪。- max_iterint,預設值=200
最大迭代次數。
- convergence_iterint,預設值=15
在估計的群集數量沒有變化的情況下,停止收斂的迭代次數。
- copybool,預設值=True
複製輸入資料。
- preferencearray-like,形狀為 (n_samples,) 或 float,預設值=None
每個點的偏好值 - 偏好值較大的點更可能被選為範例 (exemplars)。 範例(即群集)的數量受輸入偏好值影響。 如果偏好值未作為參數傳遞,則會將其設定為輸入相似度的中位數。
- affinity{'euclidean', 'precomputed'},預設值='euclidean'
要使用的親和性 (affinity)。目前支援 'precomputed' 和
euclidean
。 'euclidean' 使用點之間負平方歐幾里得距離。- verbosebool,預設值=False
是否顯示詳細資訊。
- random_stateint、RandomState 實例或 None,預設值=None
用於控制起始狀態的虛擬隨機數產生器。使用整數以獲得跨函數呼叫的可重複結果。請參閱術語表。
在 0.23 版本中新增: 此參數先前被硬編碼為 0。
- 屬性:
- cluster_centers_indices_ndarray,形狀為 (n_clusters,)
群集中心的索引。
- cluster_centers_ndarray,形狀為 (n_clusters, n_features)
群集中心 (如果 affinity !=
precomputed
)。- labels_ndarray,形狀為 (n_samples,)
每個點的標籤。
- affinity_matrix_ndarray,形狀為 (n_samples, n_samples)
儲存在
fit
中使用的親和性矩陣。- n_iter_int
收斂所需的迭代次數。
- n_features_in_int
在 fit 期間看到的特徵數量。
在 0.24 版本中新增。
- feature_names_in_ndarray,形狀為 (
n_features_in_
,) 在 fit 期間看到的特徵名稱。僅當
X
具有全部為字串的特徵名稱時才定義。在 1.0 版本中新增。
參見
AgglomerativeClustering
遞迴合併最小化給定連結距離的群集對。
FeatureAgglomeration
與 AgglomerativeClustering 相似,但遞迴合併特徵而不是樣本。
KMeans
K-Means 分群。
MiniBatchKMeans
Mini-Batch K-Means 分群。
MeanShift
使用平坦核心的均值漂移分群。
SpectralClustering
將分群應用於標準化拉普拉斯算子的投影。
注意事項
有關使用範例,請參閱親和力傳播分群演算法示範。
親和力傳播的演算法複雜度與點數呈平方關係。
當演算法不收斂時,如果存在任何範例/群集,它仍然會返回
cluster_center_indices
和標籤陣列,但它們可能是退化的,應謹慎使用。當
fit
不收斂時,cluster_centers_
仍然會被填充,但它可能是退化的。在這種情況下,請謹慎操作。如果fit
不收斂且無法產生任何cluster_centers_
,則predict
會將每個樣本標記為-1
。當所有訓練樣本都具有相同的相似度和相同的偏好時,群集中心和標籤的分配取決於偏好。如果偏好小於相似度,則
fit
將產生單一群集中心,並將每個樣本的標籤設為0
。否則,每個訓練樣本都會成為自己的群集中心,並被分配一個唯一的標籤。參考文獻
Brendan J. Frey and Delbert Dueck, “Clustering by Passing Messages Between Data Points”, Science Feb. 2007
範例
>>> from sklearn.cluster import AffinityPropagation >>> import numpy as np >>> X = np.array([[1, 2], [1, 4], [1, 0], ... [4, 2], [4, 4], [4, 0]]) >>> clustering = AffinityPropagation(random_state=5).fit(X) >>> clustering AffinityPropagation(random_state=5) >>> clustering.labels_ array([0, 0, 0, 1, 1, 1]) >>> clustering.predict([[0, 0], [4, 4]]) array([0, 1]) >>> clustering.cluster_centers_ array([[1, 2], [4, 2]])
- fit(X, y=None)[原始碼]#
從特徵或親和力矩陣擬合集群。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列 (array-like) 或稀疏矩陣,或形狀為 (n_samples, n_samples) 的類陣列
用於集群的訓練實例,或如果
affinity='precomputed'
,則為實例之間的相似度/親和力。如果提供稀疏特徵矩陣,它將被轉換為稀疏的csr_matrix
。- y已忽略
未使用,此處僅為 API 一致性而存在。
- 回傳值:
- self
回傳實例本身。
- fit_predict(X, y=None)[原始碼]#
從特徵/親和力矩陣擬合集群;回傳集群標籤。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列 (array-like) 或稀疏矩陣,或形狀為 (n_samples, n_samples) 的類陣列
用於集群的訓練實例,或如果
affinity='precomputed'
,則為實例之間的相似度/親和力。如果提供稀疏特徵矩陣,它將被轉換為稀疏的csr_matrix
。- y已忽略
未使用,此處僅為 API 一致性而存在。
- 回傳值:
- labels形狀為 (n_samples,) 的 ndarray
集群標籤。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看使用者指南,了解路由機制如何運作。
- 回傳值:
- routingMetadataRequest
一個
MetadataRequest
封裝路由資訊。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deepbool,預設值為 True
如果為 True,將回傳此估算器及其包含的子物件(屬於估算器)的參數。
- 回傳值:
- paramsdict
參數名稱對應到其值。