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