AP算法,具有結果穩定可重現
訓練前不用制定K-means中K值,但是算法的時間復雜度比K-means高
AP 的中心點是樣本中的某一個點,而K-means不是.
import numpy as np
from sklearn.cluster import AffinityPropagation # 引入AP算法聚類
X = np.array([[1,2],[1,4],[0.7,0],[0.2,5],[0,4],[1.3,0],[0.1,2],[0,4],[0.4,0]]) # 訓練數據
af = AffinityPropagation(preference=-5).fit(X) # preference結點參考度 =-5 聚類
print(af.labels_) # 查看聚類結果
af2 = AffinityPropagation(preference=-8).fit(X)
print(af2.labels_) # 查看聚類結果
print(af2.n_iter_) # 迭代進行了42輪
print(af2.cluster_centers_) # 兩個質心的坐標
'''
一些重要的初始化參數:
damping: 阻尼因子,范圍在0.5-1之間
converfence_iter: 聚類結果連續迭代 converfence_iter 次沒有變化時,認為已經達到了穩定狀態,算法完成
max_iter: 最大迭代次數
preference: 結點參考度,可以是一個數值或一個數組(每個樣本有各自的參考度)
affinity: 相似度計算的方法
一些重要的聚類結果的屬性:
cluster_centers_indices 質心樣本在訓練集中的索引號
cluster_centers_: 質心結點的特征向量數組
labels_: 訓練樣本的聚類結果
n_iter: 算法收斂所用的迭代次數
affinity_matrix: 近鄰矩陣,也就是責任度矩陣和可用度矩陣的和
'''