【问题标题】:Principal components analysis using pandas dataframe使用 pandas 数据框进行主成分分析
【发布时间】:2014-06-10 12:27:51
【问题描述】:

如何根据 pandas 数据框中的数据计算主成分分析?

【问题讨论】:

    标签: python pandas pca scientific-computing principal-components


    【解决方案1】:

    大多数sklearn 对象都可以与pandas 数据帧一起工作,这样的东西适合你吗?

    import pandas as pd
    import numpy as np
    from sklearn.decomposition import PCA
    
    df = pd.DataFrame(data=np.random.normal(0, 1, (20, 10)))
    
    pca = PCA(n_components=5)
    pca.fit(df)
    

    您可以通过

    访问组件本身
    pca.components_ 
    

    【讨论】:

    • 这很好用。只是一个可能感兴趣的补充:与数组相反,以 DataFrame 结尾通常也很方便。为此,可以执行以下操作:pandas.DataFrame(pca.transform(df), columns=['PCA%i' % i for i in range(n_components)], index=df.index),我已经设置 n_components=5。此外,您在代码上方的文本中有错字,“panadas”应该是“pandas”。 :)
    • 在我的例子中,我想要的是组件,而不是转换,所以采用@Moot 的语法我使用了df = pandas.DataFrame(pca.components_)。最后要注意的是,如果您要尝试将这个新的df 与点积一起使用,请务必查看此链接:[stackoverflow.com/questions/16472729/…
    【解决方案2】:
    import pandas
    from sklearn.decomposition import PCA
    import numpy
    import matplotlib.pyplot as plot
    
    df = pandas.DataFrame(data=numpy.random.normal(0, 1, (20, 10)))
    
    # You must normalize the data before applying the fit method
    df_normalized=(df - df.mean()) / df.std()
    pca = PCA(n_components=df.shape[1])
    pca.fit(df_normalized)
    
    # Reformat and view results
    loadings = pandas.DataFrame(pca.components_.T,
    columns=['PC%s' % _ for _ in range(len(df_normalized.columns))],
    index=df.columns)
    print(loadings)
    
    plot.plot(pca.explained_variance_ratio_)
    plot.ylabel('Explained Variance')
    plot.xlabel('Components')
    plot.show()
    

    【讨论】:

      猜你喜欢
      • 2018-09-25
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 2013-04-07
      • 1970-01-01
      相关资源
      最近更新 更多