1

多次元スケーリングを実行した後でEigenvaluesを調べることに興味があります。どのような機能がそれを行うことができますか?私はdocumentationを見ましたが、Eigenvaluesはまったく言及していません。ここで多次元スケーリングを実行した後に固有値を取得する方法は?

は、コードサンプルです:

mds = manifold.MDS(n_components=100, max_iter=3000, eps=1e-9, 
        random_state=seed, dissimilarity="precomputed", n_jobs=1) 
results = mds.fit(wordDissimilarityMatrix) 
# need a way to get the Eigenvalues 

答えて

0

私もドキュメントを読んで、それを見つけることができませんでした。私は、彼らがclassical MDSを実行していない疑いがあるが、より洗練された何か:

「現代の多次元尺度法 - 理論と応用」ボルグ、I;統計にGroenen P.スプリンガー・シリーズ(1997)

「非計量多次元尺度:数値的方法」クラスカル、J. Psychometrika、29(1964)

「非計量仮説に適合度を最適化することにより多次元スケーリング」 Kruskal、J. Psychometrika、29(1964)

古典的なMDSごとに固有値を求めているのであれば、それを自分で得るのは難しくありません。手順は次のとおりです。

  1. 距離行列を取得します。その後、それを正方形にします。
  2. ダブルセンタリングを実行します。
  3. 固有値と固有ベクトルを見つける
  4. トップ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] 
    
  5. あなたのi番目の原則コンポーネントは、(eigenvalue_i)* eigenvector_i

のコード例については以下を参照してくださいSQRTです

関連する問題