mds算法python函数_多维标度法(MDS)的Python实现
標(biāo)簽:
多維標(biāo)度法(multidimensional scaling,MDS)是一種在低維空間展示“距離”數(shù)據(jù)結(jié)構(gòu)的多元數(shù)據(jù)分析技術(shù),是一種將多維空間的研究對(duì)象( 樣本 或 變量 ) 簡(jiǎn)化到低維空間進(jìn)行定位、分析和歸類, 同時(shí)又保留對(duì)象間原始關(guān)系的數(shù)據(jù)分析方法。
多維標(biāo)度法與主成分分析(Principle Component Analysis,PCA)、線性判別分析(Linear Discriminent Analysis,LDA)類似,都可以用來(lái)降維
多維標(biāo)度法的目標(biāo):當(dāng)n 個(gè)對(duì)象中各對(duì)對(duì)象之間的相似性(或距離)給定時(shí),確定這些對(duì)象在低維(歐式) 空間中的表示(稱為感知圖, Perceptual Mapping),并使其盡可能與原先的相似性(或距離)“大體匹配”,使得由降維所引起的任何變形達(dá)到最小。
低維(歐式) 空間中排列的每一個(gè)點(diǎn)代表一個(gè)對(duì)象,因此點(diǎn)間的距離與對(duì)象間的相似性高度相關(guān)。也就是說(shuō),兩個(gè)相似的對(duì)象由低維(歐式) 空間中兩個(gè)距離相近的點(diǎn)表示,而兩個(gè)不相似的對(duì)象則由低維(歐式) 空間兩個(gè)距離較遠(yuǎn)的點(diǎn)表示。低維空間通常為二維或三維的歐氏空間,但也可以是非歐氏三維以上空間.
Classical MDS:
? 原始空間下的距離陣和低維空間下的距離陣都采用歐式距離陣
? 距離陣D 為歐式的, 即存在某個(gè)正整數(shù)p 以及Rp 空間的n個(gè)點(diǎn)x1, . . . , xn, 使得
目標(biāo)在于: 尋找D 的(擬合) 構(gòu)圖x1, . . . , xn, 其想法為
– 將平方的歐式距離陣D = (d2ij) 變換為一個(gè)非負(fù)定矩陣B
– 由B 的特征根和特征向量得到構(gòu)圖X, X 的每一行表示低維空間的點(diǎn).
? 為此, 記原始的p 維對(duì)象(觀測(cè)點(diǎn)) 為x1, . . . , xn(一般是未知的), 兩兩之間的距離平方為
B = ?1/2*HDH,H = In ? 1/n 11′
其中, r 的確定: 事先確定r = 1, 2 或3; 或者通過(guò)計(jì)算前面特征根占全體特征根的比例確定.
importnumpy as np
D=np.array([[0,411,213,219,296,397],
[411,0,204,203,120,152],
[213,204,0,73,136,245],
[219,203,73,0,90,191],
[296,120,136,90,0,109],
[397,152,245,191,109,0]])
N=D.shape[0]
T=np.zeros((N,N))#solution 1#ss = 1.0/N**2*np.sum(D**2)#for i in range(N):#for j in range(i,N):#T[i,j] = T[j,i] = -0.5*(D[i,j]**2 -1.0/N*np.dot(D[i,:],D[i,:]) -1.0/N*np.dot(D[:,j],D[:,j])+ss)
#solution 2
K =np.dot(D,np.transpose(D))
D2= D**2H= np.eye(N) - 1/N
T= -0.5*np.dot(np.dot(H,D2),H)
eigVal,eigVec=np.linalg.eig(T)
X= np.dot(eigVec[:,:2],np.diag(np.sqrt(eigVal[:2])))print(‘original distance‘,‘\tnew distance‘)for i inrange(N):for j in range(i+1,N):print(np.str(D[i,j]),‘\t\t‘,np.str("%.4f"%np.linalg.norm(X[i]-X[j])))
運(yùn)行結(jié)果:
參考文檔:典型相關(guān)分析和多維標(biāo)度法-張偉平的講義
標(biāo)簽:
總結(jié)
以上是生活随笔為你收集整理的mds算法python函数_多维标度法(MDS)的Python实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql连接池_基于Swoole的通用
- 下一篇: 如何在家里制作自制酸奶冰淇淋?