1. 程式人生 > >聚類分析之譜聚類

聚類分析之譜聚類

空間聚類 family 數據集 .cn 存在 聚類算法 array 全局最優 傳統

聚類根據給定的樣本數據集定義一個描述成對數據點相似度的親合矩陣,並且計算矩陣的特征值和特征向量 , 然後選擇合適 的特征向量聚類不同的數據點。

譜聚類可以在任意形狀的樣本空間聚類,且收斂於全局最優解,因此在處理高維數據方面存在著明顯優勢。總的來說,該算法存在一些不足之處。算法在聚類之前需要設置具體應用的尺度參數,通常需要一些經驗。初始聚類中心對整個聚類效果影響很大,存在初始值敏感問題。很難找到圖劃分的優化解,聚類數目對於整個聚類效果有很大影響。

setp1:計算圖的拉普拉斯矩陣L=D-w

setp2:歸一化拉普拉斯矩陣

setp3:計算歸一化後的拉普拉斯矩陣的特征值和特征向量Q

setp4:對Q進行K-means聚類,return(c1,c2,c3...cn)

優點:因此比傳統的聚類算法更加健壯一些,對於不規則的誤差數據不是那麽敏感,計算復雜度比 K-means 要小

代碼:

from sklearn.cluster import SpectralClustering
from sklearn import datasets
from dask.array.learn import predict
import numpy as np
iris = datasets.load_iris()
X = iris.data
y = iris.target
print(y)
clf=SpectralClustering(n_clusters=3)
predicted=clf.fit_predict(X)
print(predicted)
k2y = np.array([0,1,2])
print(k2y[predicted])
print((k2y[predicted] == y).astype(int).mean())

聚類精度為0.9

聚類分析之譜聚類