正在學習超圖聚類,看了聚類內建經典的論文,Cluster Ensembles -A Knowledge Reuse Framework for Combining Multiple Partitions,用譜聚類簡單驗證了超圖聚類,貼出代碼,希望大家指正,有問題請指教。
原論文部分:
代碼:
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
A=np.array([[0,3,2,1,0,0,0],
[3,0,2,0,1,0,0],
[2,2,0,1,0,0,0],
[1,0,1,0,2,0,0],
[0,1,0,2,0,1,1],
[0,0,0,0,1,0,3],
[0,0,0,0,1,3,0]])
D=np.diag((6,6,5,4,5,4,4))
L=D-A
eigval,eigvec=np.linalg.eig(L)
dim=len(eigval)
##對特征值、特征向量排序
dictEigval=dict(zip(eigval,range(0,dim)))
##取前3個特征值、特征向量
kEig=np.sort(eigval)[0:3]
ix=[dictEigval[k] for k in kEig]
a,b=eigval[ix],eigvec[:,ix]
k=KMeans(n_clusters=3)
k.fit(b)
m=k.labels_
plt.scatter(b[:,1],b[:,2],c=k.labels_)