资源简介
python实现谱聚类代码并进行可视化,内涵样例数据集和代码
代码片段和文件信息
# coding=utf-8
import scipy.io as sio
from sklearn.cluster import KMeans
import numpy as np
import random
import copy
import matplotlib.pyplot as plt
import operator
def loaddata(): # 读取数据
file = ‘GaussianData.mat‘
file = ‘ringData.mat‘
data = sio.loadmat(file)
matrix = np.array(data[‘Dataset‘])
return matrix
def distance(p1p2): # 欧式距离
return np.linalg.norm(p1-p2)
def getWbyKNN(datak): # 利用KNN获得相似度矩阵
points_num = len(data)
dis_matrix = np.zeros((points_numpoints_num))
W = np.zeros((points_numpoints_num))
for i in range(points_num):
for j in range(i+1points_num):
dis_matrix[i][j] = dis_matrix[j][i] = distance(data[i]data[j])
for idxeach in enumerate(dis_matrix):
index_array = np.argsort(each)
W[idx][index_array[1:k+1]] = 1 # 距离最短的是自己
tmp_W = np.transpose(W)
W = (tmp_W+W)/2 #转置相加除以2是为了让矩阵对称
return W
def getD(W): # 获得度矩阵
points_num = len(W)
D = np.diag(np.zeros(points_num))
for i in range(points_num):
D[i][i] = sum(W[i])
return D
def getEigVec(Lcluster_num): #从拉普拉斯矩阵获得特征矩阵
eigvaleigvec = np.linalg.eig(L)
dim = len(eigval)
dictEigval = dict(zip(eigvalrange(0dim)))
kEig = np.sort(eigval)[0:cluster_num]
ix = [dictEigval[k] for k in kEig]
return eigval[ix]eigvec[:ix]
def randRGB():
return (random.randint(0 255)/255.0
random.randint(0 255)/255.0
random.randint(0 255)/255.0)
def plot(matrixCcentersk):
colors = []
for i in range(k):
colors.append(randRGB())
for idxvalue in enumerate(C):
plt.plot(matrix[idx][0]matrix[idx][1]‘o‘color=colors[int(C[idx])])
for i in range(len(centers)):
plt.plot(centers[i][0]centers[i][1]‘rx‘)
plt.show()
def getCenters(dataC): # 获得中心位置
centers = []
for i in range(max(C)+1):
points_list = np.where(C==i)[0].tolist()
centers.append(np.average(data[points_list]axis=0))
return centers
if __name__ == ‘__main__‘:
cluster_num = 2
KNN_k = 5
data = loaddata()
W = getWbyKNN(dataKNN_k)
D = getD(W)
L = D-W
eigvaleigvec = getEigVec(Lcluster_num)
# print eigvaleigvec
clf = KMeans(n_clusters=cluster_num)
s = clf.fit(eigvec)
C = s.labels_
centers = getCenters(dataC)
plot(datas.labels_centerscluster_num)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-06-23 11:17 spectral_cluster\
文件 10200 2017-03-01 21:09 spectral_cluster\Gaussian.txt
文件 4794 2017-03-01 21:09 spectral_cluster\GaussianData.mat
文件 2903 2017-03-12 19:32 spectral_cluster\readme.md
文件 17102 2017-03-01 21:09 spectral_cluster\ringData.mat
文件 37400 2017-03-01 21:09 spectral_cluster\ringData.txt
文件 2583 2017-03-12 17:54 spectral_cluster\spectral_clustering.py
- 上一篇:解析pcap数据包
- 下一篇:用Python实现语音的传输功能
相关资源
- 机器学习-python处理UCI鲍鱼数据集.ra
- 利用贝叶斯算法实现垃圾邮件分类
- 利用鸢尾花数据集画出P-R曲线 pytho
- 实战python利用线性回归来预测鲍鱼年
- 实战python线性回归
- python内置K-means聚类算法对鸢尾花数据
- 使用训练好的模型进行预测
- Python→Transorflow猫狗识别完整代码,附
- FaceClustering.zip
- Python-RNNoiseRNN音频噪声抑制学习
- Python-Keras实现实时语义分割的深层神
- Python-手势识别使用在TensorFlow中卷积神
- python 机器学习之支持向量机非线性回
- datingTestSet2.txt
- 多层BP神经网络参数高自由度Python
- 模糊聚类python可执行完整代码
- 基于sklearn模块的KMeans聚类算法实现“
- 二项分布的代码可视化实现
- 机器学习之KNN识别验证码
- 随机森林做泰坦尼克号案例的Python实
- Python识别深圳信用网验证码的完整代
- C4.5决策树算法的Python代码和数据样本
- 四种聚类算法实现对控制图时间序列
- python数据挖掘分类聚类回归关联算法
- 密度聚类(Density peaks Clustering)Pyth
- python界面GUI实现k-means聚类算法
- 机器学习深度学习篇系列分享_超值
- Python数据分析与机器学习-Python库分析
- 20newsgroup python分类聚类
- 决策树DecisionTree项目python代码实现
评论
共有 条评论