正在学习超图聚类,看了聚类集成经典的论文,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_)