如何在执行多维缩放后获得特征值?
How to obtain the eigenvalues after performing Multidimensional scaling?
我有兴趣在执行多维缩放后查看特征值。什么功能可以做到这一点?我看了 documentation,但它根本没有提到特征值。
这是一个代码示例:
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
我也没有通过阅读文档找到它。我怀疑他们不是在表演 classical MDS,而是在表演一些更复杂的东西:
“Modern Multidimensional Scaling - Theory and Applications” Borg, I.; Groenen P. Springer Series in Statistics (1997)
“Nonmetric multidimensional scaling: a numerical method” Kruskal, J. Psychometrika, 29 (1964)
“Multidimensional scaling by optimizing goodness of fit to a nonmetric hypothesis” Kruskal, J. Psychometrika, 29, (1964)
如果您正在寻找每个经典 MDS 的特征值,那么您自己得到它们并不难。步骤是:
- 获取距离矩阵。然后平方。
- 执行双重居中。
- 求特征值和特征向量
- Select 前 k 个特征值。
- 你的第 i 个主成分是 sqrt(eigenvalue_i)*eigenvector_i
请参阅下面的代码示例:
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]
我有兴趣在执行多维缩放后查看特征值。什么功能可以做到这一点?我看了 documentation,但它根本没有提到特征值。
这是一个代码示例:
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
我也没有通过阅读文档找到它。我怀疑他们不是在表演 classical MDS,而是在表演一些更复杂的东西:
“Modern Multidimensional Scaling - Theory and Applications” Borg, I.; Groenen P. Springer Series in Statistics (1997)
“Nonmetric multidimensional scaling: a numerical method” Kruskal, J. Psychometrika, 29 (1964)
“Multidimensional scaling by optimizing goodness of fit to a nonmetric hypothesis” Kruskal, J. Psychometrika, 29, (1964)
如果您正在寻找每个经典 MDS 的特征值,那么您自己得到它们并不难。步骤是:
- 获取距离矩阵。然后平方。
- 执行双重居中。
- 求特征值和特征向量
- Select 前 k 个特征值。
- 你的第 i 个主成分是 sqrt(eigenvalue_i)*eigenvector_i
请参阅下面的代码示例:
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]