私もドキュメントを読んで、それを見つけることができませんでした。私は、彼らがclassical MDSを実行していない疑いがあるが、より洗練された何か:
「現代の多次元尺度法 - 理論と応用」ボルグ、I;統計にGroenen P.スプリンガー・シリーズ(1997)
「非計量多次元尺度:数値的方法」クラスカル、J. Psychometrika、29(1964)
「非計量仮説に適合度を最適化することにより多次元スケーリング」 Kruskal、J. Psychometrika、29(1964)
古典的なMDSごとに固有値を求めているのであれば、それを自分で得るのは難しくありません。手順は次のとおりです。
- 距離行列を取得します。その後、それを正方形にします。
- ダブルセンタリングを実行します。
- 固有値と固有ベクトルを見つける
- トップk固有値を選択してください。
import numpy.linalg as la
import pandas as pd
# get some distance matrix
df = pd.read_csv("http://rosetta.reltech.org/TC/v15/Mapping/data/dist-Aus.csv")
A = df.values.T[1:].astype(float)
# square it
A = A**2
# centering matrix
n = A.shape[0]
J_c = 1./n*(np.eye(n) - 1 + (n-1)*np.eye(n))
# perform double centering
B = -0.5*(J_c.dot(A)).dot(J_c)
# find eigenvalues and eigenvectors
eigen_val = la.eig(B)[0]
eigen_vec = la.eig(B)[1].T
# select top 2 dimensions (for example)
PC1 = np.sqrt(eigen_val[0])*eigen_vec[0]
PC2 = np.sqrt(eigen_val[1])*eigen_vec[1]
:
- あなたのi番目の原則コンポーネントは、(eigenvalue_i)* eigenvector_i
のコード例については以下を参照してくださいSQRTです