Python 如何在执行多维缩放后获得特征值?

Python 如何在执行多维缩放后获得特征值?,python,scikit-learn,eigenvalue,dimensionality-reduction,multi-dimensional-scaling,Python,Scikit Learn,Eigenvalue,Dimensionality Reduction,Multi Dimensional Scaling,我感兴趣的是在执行多维缩放后查看特征值。什么功能可以做到这一点?我看了,但它根本没有提到特征值 下面是一个代码示例: 通过阅读文档,我也找不到它。我怀疑他们不是在表演,而是更复杂的东西: “现代多维标度-理论与应用”博格,I。;统计中的Groenen P.Springer级数(1997) “非计量多维标度:一种数值方法”,Kruskal,J.Psychometricka,29(1964) “通过优化非计量假设的拟合优度进行多维标度”,Kruskal,J.Psychometricka,29,(19

我感兴趣的是在执行多维缩放后查看特征值。什么功能可以做到这一点?我看了,但它根本没有提到特征值

下面是一个代码示例:


通过阅读文档,我也找不到它。我怀疑他们不是在表演,而是更复杂的东西:

“现代多维标度-理论与应用”博格,I。;统计中的Groenen P.Springer级数(1997)

“非计量多维标度:一种数值方法”,Kruskal,J.Psychometricka,29(1964)

“通过优化非计量假设的拟合优度进行多维标度”,Kruskal,J.Psychometricka,29,(1964)

如果你在寻找经典MDS的特征值,那么你自己也不难找到它们。这些步骤是:

  • 得到你的距离矩阵。然后把它摆正
  • 执行双重定心
  • 求特征值和特征向量
  • 选择前k个特征值
  • 第i个主分量是sqrt(特征值_i)*特征向量_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]
    
    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]