1

Ich interessiere mich für einen Blick auf die Eigenwerte nach der multidimensionalen Skalierung. Welche Funktion kann das? Ich schaute auf die documentation, aber es erwähnt Eigenvalues ​​überhaupt nicht.Wie erhalten Sie die Eigenwerte nach der multidimensionalen Skalierung?

Hier ist ein Codebeispiel:

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 

Antwort

0

Ich konnte auch nicht aus finden die Dokumentation zu lesen. Ich vermute, sie führen nicht classical MDS, aber etwas mehr anspruchsvolle:

"Moderne mehrdimensionale Skalierung - Theorie und Anwendungen" Borg, I .; Groenen P. Springer-Statistik (1997)

„nichtmetrischen multidimensionalen Skalierung: eine numerische Methode“ Kruskal, J. Psychometrika, 29 (1964)

„Multidimensionale Skalierung durch Güte der Anpassung an eine nichtmetrischen Hypothese zu optimieren“ Kruskal, J. Psychometrika, 29, (1964)

Wenn Sie nach Eigenwerten pro klassischen MDS suchen, dann ist es nicht schwer, sie selbst zu bekommen. Die Schritte sind:

  1. Holen Sie sich Ihre Distanzmatrix. Dann platziere es.
  2. Doppelzentrierung durchführen.
  3. Eigenwerte und Eigenvektoren finden
  4. Obere k Eigenwerte auswählen.
  5. Ihre i-ten Hauptkomponente ist sqrt (eigenvalue_i) * eigenvector_i

Siehe unten für Codebeispiel:

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] 
Verwandte Themen