【问题标题】:Python Scikit-Learn PCA: Get Component ScorePython Scikit-Learn PCA:获取组件分数
【发布时间】:2015-08-07 14:51:08
【问题描述】:

我正在尝试为工作执行主成分分析。虽然我已经成功地布置了主要组件,但我真的不知道如何将生成的组件分数分配给每个行项目。我正在寻找类似这样的输出。

Town       PrinComponent 1 PrinComponent 2 PrinComponent 3
Columbia     0.31989       -0.44216        -0.44369
Middletown  -0.37101       -0.24531        -0.47020
Harrisburg  -0.00974       -0.06105         0.32792
Newport     -0.38678        0.40935        -0.62996 

scikit-learn 文档在这种情况下没有帮助。谁能向我解释我如何达到这个输出?

我目前的代码如下。

def perform_PCA(df):
    threshold = 0.1
    pca = decomposition.PCA(n_components=3)
    numpyMatrix = df.as_matrix().astype(float)
    scaled_data = preprocessing.scale(numpyMatrix)
    pca.fit(scaled_data)    
    pca.transform(scaled_data)

    pca_components_df = pd.DataFrame(data = pca.components_,columns = df.columns.values)
    #print pca_components_df
    #pca_components_df.to_csv('pca_components_df.csv')

    filtered = pca_components_df[abs(pca_components_df) > threshold]
    trans_filtered= filtered.T
    #print filtered.T #Tranformed Dataframe
    trans_filtered.to_csv('trans_filtered.csv')
    print pca.explained_variance_ratio_

【问题讨论】:

  • pca.transform(scaled_data) 的行输出了您要查找的内容。
  • 有没有办法按照我在问题中显示的模板的线条向该数组添加标签,以便它可以解释?
  • 具体有没有办法将其显示为具有可见索引的熊猫数据框?
  • Scikit-learn(当前)从不输出 pandas 数据帧。不过,您可以轻松地从返回的数组中创建一个并重新添加标签。

标签: python statistics scikit-learn


【解决方案1】:

我将 transformed 数组泵入 DataFrame 函数的数据部分,然后通过将它们放入 columns=index 来定义索引和列= 分别。

pd.DataFrame(data=transformed, columns=["PC1", "PC2"], index=df.index)

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 2017-12-24
    • 2015-02-23
    • 1970-01-01
    • 2018-03-23
    • 2019-01-25
    • 2019-03-05
    • 2015-10-12
    • 2019-10-04
    相关资源
    最近更新 更多