Python 基于sklearn和panda的主成分分析

Python 基于sklearn和panda的主成分分析,python,pandas,scikit-learn,pca,principal-components,Python,Pandas,Scikit Learn,Pca,Principal Components,我试图在这里()重现PCA教程中的结果,但遇到了一些问题 据我所知,我正在遵循应用PCA的步骤。但是我的结果与教程中的不一样(或者可能是这样,我不能正确地解释它们?)。当n_分量=4时,我得到下图。我可能在某个地方遗漏了一些东西,我还添加了迄今为止的代码 我的第二个问题是关于注释图形中的点,我有标签,我希望每个点都有相应的标签。我试过一些东西,但到目前为止没有成功 我还添加了数据集,并将其保存为CSV: ,奶酪,胴体肉,其他肉类,鱼,脂肪和油,糖,新鲜土豆,新鲜蔬菜,其他蔬菜,加工土豆,加工蔬菜

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

  • 据我所知,我正在遵循应用PCA的步骤。但是我的结果与教程中的不一样(或者可能是这样,我不能正确地解释它们?)。当n_分量=4时,我得到下图。我可能在某个地方遗漏了一些东西,我还添加了迄今为止的代码

  • 我的第二个问题是关于注释图形中的点,我有标签,我希望每个点都有相应的标签。我试过一些东西,但到目前为止没有成功

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

    ,奶酪,胴体肉,其他肉类,鱼,脂肪和油,糖,新鲜土豆,新鲜蔬菜,其他蔬菜,加工土豆,加工蔬菜,新鲜水果,谷物,饮料,软饮料,酒精饮料,糖果 英格兰1052456851471931567205348819836011021472,571374375,54 威尔士,103227803160235175874265570020336511371582,731256475,64 苏格兰,1032427501221841475671418220379571462,531572458,62 尼兰,66267586,9320913910331433551873346741494,471506135,41

    对这两个问题有什么想法吗

    `

    `你可以试试这个

    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')
    
    你可以试试这个

    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')
    

    您上载的csv文件似乎缺少一些“\n”。pd.read\u csv无法读取它。你能发送一个原始文件的链接吗?或者使用pd.to_csv()保存数据并上传到这里?哦,当然。这是您上载的csv文件似乎缺少一些“\n”。pd.read\u csv无法读取它。你能发送一个原始文件的链接吗?或者使用pd.to_csv()保存数据并上传到这里?哦,当然。这是您上载的csv文件似乎缺少一些“\n”。pd.read\u csv无法读取它。你能发送一个原始文件的链接吗?或者使用pd.to_csv()保存数据并上传到这里?哦,当然。这是文件,我认为这不是正确的方法。与示例(英国饮食部分)一样,维度是食品类别,观察结果是英国的4个国家。所以它应该看起来像那个教程上的图表。Buuut我搞砸了一些事情,数值都错了。同意。对不起,我弄错了。我很快就会纠正这个问题的。数据为4次观测的17维(特征)。那么您不应该在demo_df.t中通过使用转置。在scikit学习中,假设每个功能都是一列,每个obs都是一行。是的,谢谢。你是对的。我看得太多了,有点晚了。另外,我并不想在图形上添加文本,我希望每个点都有一个标签,就像示例中的图形一样。我试过这样做:plt.figure()代表c,target_name在zip中('r',target_name):plt.scatter(comps[:,0],comps[:,1],c=c,label=target_name),但它只接受颜色,不接受标签…我认为这不是正确的方法。与示例(英国饮食部分)一样,维度是食品类别,观察结果是英国的4个国家。所以它应该看起来像那个教程上的图表。Buuut我搞砸了一些事情,数值都错了。同意。对不起,我弄错了。我很快就会纠正这个问题的。数据为4次观测的17维(特征)。那么您不应该在demo_df.t中通过使用转置。在scikit学习中,假设每个功能都是一列,每个obs都是一行。是的,谢谢。你是对的。我看得太多了,有点晚了。另外,我并不想在图形上添加文本,我希望每个点都有一个标签,就像示例中的图形一样。我试过这样做:plt.figure()代表c,target_name在zip中('r',target_name):plt.scatter(comps[:,0],comps[:,1],c=c,label=target_name),但它只接受颜色,不接受标签…我认为这不是正确的方法。与示例(英国饮食部分)一样,维度是食品类别,观察结果是英国的4个国家。所以它应该看起来像那个教程上的图表。Buuut我搞砸了一些事情,数值都错了。同意。对不起,我弄错了。我很快就会纠正这个问题的。数据为4次观测的17维(特征)。那么您不应该在demo_df.t中通过使用转置。在scikit学习中,假设每个功能都是一列,每个obs都是一行。是的,谢谢。你是对的。我看得太多了,有点晚了。另外,我并不想在图形上添加文本,我希望每个点都有一个标签,就像示例中的图形一样。我这样尝试过:plt.figure()表示c,target\u name在zip中('r',target\u name):plt.scatter(comps[:,0],comps[:,1],c=c,label=target\u name),但它只接受颜色,而不接受标签。。。