使用sklearn和panda进行主成分分析

时间:2015-06-18 19:31:45

标签: python pandas scikit-learn pca principal-components

我试图在这里(PCA-tutorial)重现PCA教程的结果,但我遇到了一些问题。

  1. 根据我的理解,我遵循应用PCA的步骤。但是我的结果与教程中的结果并不相似(或者它们可能并且我无法解释它们吗?)。使用n_components = 4,我得到以下图n_components4。我可能在某个地方遗漏了某些东西,我还添加了我到目前为止的代码。

  2. 我的第二个问题是关于注释图中的点,我有标签,我希望每个点都能得到相应的标签。我尝试了一些事情但到目前为止没有成功。

  3. 我还添加了数据集,我将其保存为CSV:

      

    ,奶酪,胴体肉,其他肉类,鱼类,油脂,糖,新鲜土豆,新鲜蔬菜,其他蔬菜,加工土豆,加工蔬菜,新鲜水果,谷物,饮料,汽水,酒精饮料,糖果   英格兰,105,245,685,147,193,156,720,253,488,198,360,1102,1472,57,1374,375,54   威尔士,103,227,803,160,235,175,874,265,570,203,365,1137,1582,73,1256,475,64   苏格兰,103,242,750,122,184,147,566,171,418,220,337,957,1462,53,1572,458,62   NIreland,66,267,586,93,209,139,1033,143,355,187,334,674,1494,47,1506,135,41

    关于这两个问题的任何想法?

    `

    import pandas as pd
    
    import matplotlib.pyplot as plt
    
    from sklearn import decomposition
    
    demo_df = pd.read_csv('uk_food_data.csv')
    demo_df.set_index('Unnamed: 0', inplace=True)
    
    target_names = demo_df.index
    tran_ne = demo_df.T
    
    pca = decomposition.PCA(n_components=4)
    comps = pca.fit(tran_ne).transform(tran_ne)
    plt.scatter(comps[0,:], comps[1, :])
    
    plt.title("PCA Analysis UK Food");
    plt.xlabel("PC1");
    plt.ylabel("PC2");
    plt.grid();
    plt.savefig('PCA_UK_Food.png', dpi=125)
    

    `

1 个答案:

答案 0 :(得分:0)

你可以试试这个。

import pandas as pd

import matplotlib.pyplot as plt

from sklearn import decomposition

# use your data file path here
demo_df = pd.read_csv(file_path)
demo_df.set_index('Unnamed: 0', inplace=True)

target_names = demo_df.index.values
tran_ne = demo_df.values

pca = decomposition.PCA(n_components=4)
pcomp = pca.fit_transform(tran_ne)
pcomp1 = pcomp[:,0]

fig, ax = plt.subplots()
ax.scatter(x=pcomp1[0], y=0, c='r', label=target_names[0])
ax.scatter(x=pcomp1[1], y=0, c='g', label=target_names[1])
ax.scatter(x=pcomp1[2], y=0, c='b', label=target_names[2])
ax.scatter(x=pcomp1[3], y=0, c='k', label=target_names[3])
ax.legend(loc='best')