微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有大数据框的 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 维空间中。只要保持组件的数量少于三个,您可以做的是绘制结果数据集:

df2 = pd.DataFrame(pca.transform(df),columns = ['first','second'])
df2.plot.scatter(x = 'first',y = 'second')

enter image description here

如您所见,我在进行 PCA 时没有考虑柱蛋白。原因是 PCA 仅适用于数字列。有关处理分类列的一些提示,请参阅 this discussion

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。