具有大数据框的 PCA 图
PCA plot with large dataframe
我有一个包含以下列的大型数据框(~1400 行):
protein IHD CM ARR VD CHD CCD VOO
0 q9uku9 0.000000 0.039457 0.032901 0.014793 0.006614 0.006591 0.000000
1 o75461 0.000000 0.005832 0.027698 0.000000 0.000000 0.006634 0.000000
等等
我想执行 PCA 分析并用向量绘图,但我不确定如何处理如此大的数据集。有人有什么建议吗?
实际上 1400 x 8 的数据帧在现代计算机上并没有那么大。您可以使用 scikit-learn 对数据集执行 PCA。比较简单:
import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
cols = ['IHD', 'CM', 'ARR', 'VD', 'CHD', 'CCD', 'VOO']
df = pd.DataFrame(np.random.random((1400, 7)), columns = cols)
pca = PCA(n_components=2)
pca.fit(df)
print(pca.components_)
print(pca.explained_variance_)
# [[-0.38406974 0.02775874 -0.59754361 -0.55464116 -0.03878488
# -0.41944628 0.09795539]
# [-0.03181143 -0.52699813 0.14325425 0.02742668 -0.48571934
# -0.33915335 0.590795 ]]
# [0.0913989 0.08975106]
您无法绘制主要成分,因为它们存在于 7 维空间中 space。只要将组件的数量保持在三个以下,您可以做的就是绘制结果数据集:
df2 = pd.DataFrame(pca.transform(df), columns = ['first', 'second'])
df2.plot.scatter(x = 'first', y = 'second')
如您所见,我在做 PCA 时没有考虑柱蛋白。原因是 PCA 仅适用于数字列。有关处理分类列的一些提示,请参阅 。
我有一个包含以下列的大型数据框(~1400 行):
protein IHD CM ARR VD CHD CCD VOO
0 q9uku9 0.000000 0.039457 0.032901 0.014793 0.006614 0.006591 0.000000
1 o75461 0.000000 0.005832 0.027698 0.000000 0.000000 0.006634 0.000000
等等
我想执行 PCA 分析并用向量绘图,但我不确定如何处理如此大的数据集。有人有什么建议吗?
实际上 1400 x 8 的数据帧在现代计算机上并没有那么大。您可以使用 scikit-learn 对数据集执行 PCA。比较简单:
import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
cols = ['IHD', 'CM', 'ARR', 'VD', 'CHD', 'CCD', 'VOO']
df = pd.DataFrame(np.random.random((1400, 7)), columns = cols)
pca = PCA(n_components=2)
pca.fit(df)
print(pca.components_)
print(pca.explained_variance_)
# [[-0.38406974 0.02775874 -0.59754361 -0.55464116 -0.03878488
# -0.41944628 0.09795539]
# [-0.03181143 -0.52699813 0.14325425 0.02742668 -0.48571934
# -0.33915335 0.590795 ]]
# [0.0913989 0.08975106]
您无法绘制主要成分,因为它们存在于 7 维空间中 space。只要将组件的数量保持在三个以下,您可以做的就是绘制结果数据集:
df2 = pd.DataFrame(pca.transform(df), columns = ['first', 'second'])
df2.plot.scatter(x = 'first', y = 'second')
如您所见,我在做 PCA 时没有考虑柱蛋白。原因是 PCA 仅适用于数字列。有关处理分类列的一些提示,请参阅