91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 41KB
    文件類型: .zip
    金幣: 2
    下載: 1 次
    發布日期: 2021-05-27
  • 語言: Python
  • 標簽: 機器學習??聚類??

資源簡介

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

評論

共有 條評論