gpt4 book ai didi

python - 如何使用 pandas 和 scikit-learn 在 Python 中进行简单的主成分分析?

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:09 25 4
gpt4 key购买 nike

我正在遵循一个例子here 。我有一些 17D 食物数据,我想为其制作 2D 主成分分析图:

import pandas as pd

df_raw = pd.DataFrame(
[
["alcoholic drinks" , 375, 135, 458, 475],
["beverages" , 57, 47, 53, 73],
["carcase meat" , 245, 267, 242, 227],
["cereals" , 1472, 1494, 1462, 1582],
["cheese" , 105, 66, 103, 103],
["confectionery" , 54, 41, 62, 64],
["fats and oils" , 193, 209, 184, 235],
["fish" , 147, 93, 122, 160],
["fresh fruit" , 1102, 674, 957, 1137],
["fresh potatoes" , 720, 1033, 566, 874],
["fresh Veg" , 253, 143, 171, 265],
["other meat" , 685, 586, 750, 803],
["other veg." , 488, 355, 418, 570],
["processed potatoes", 198, 187, 220, 203],
["processed veg." , 360, 334, 337, 365],
["soft drinks" , 1374, 1506, 1572, 1256],
["sugars" , 156, 139, 147, 175]
],
columns = [
"food",
"England",
"Northern Ireland",
"Scotland",
"Wales"
]
)

df_raw

我通过以下方式运行 PCA 拟合:

# drop food names
df = df_raw[[column for column in df_raw.columns if column != "food"]]

# perform PCA
import sklearn.decomposition

pca = sklearn.decomposition.PCA(n_components = 2)
pca.fit(df)

为了绘制二维图,我尝试将特征投影到主要组件上:

projection = pca.transform(df)
x = projection[:,0]
y = projection[:,1]

然后我绘制:

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.set(context = "paper", font = "monospace")

plt.scatter(x, y)
plt.axes().set_aspect(1 / plt.axes().get_data_ratio())
plt.xlabel("PC1")
plt.ylabel("PC2")
plt.show()

我觉得这事不太对劲。我期待四个点(我很想知道如何标记这些点)。我哪里出错了?

最佳答案

您的数据有 4 个维度(因为您从数据框中排除了食品)和 17 个示例。当您进行 PCA 时,您希望减少维度,同时保留尽可能多的信息。在本例中,您将原始 4 个维度转换为分量数,在本例中为 2。PCA 不会更改观测值的数量,因此您会在散点图中看到 17 个点。

我没有详细介绍 PCA,因为那将是一个单独的主题,您可以找到它背后的许多教程和数学。

关于python - 如何使用 pandas 和 scikit-learn 在 Python 中进行简单的主成分分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44139673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com