親和力傳播#

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

參數名稱對應到其值。

predict(X)[原始碼]#

預測 X 中每個樣本所屬的最接近集群。

參數:
X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣

要預測的新資料。如果提供稀疏矩陣,它將被轉換為稀疏的 csr_matrix

回傳值:
labels形狀為 (n_samples,) 的 ndarray

集群標籤。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單的估算器以及巢狀物件(例如 Pipeline)。後者的參數形式為 <component>__<parameter>,因此可以更新巢狀物件的每個組件。

參數:
**paramsdict

估算器參數。

回傳值:
self估算器實例

估算器實例。