使用带有 2 个组件的 Python 可视化转换后的数据
Posted
技术标签:
【中文标题】使用带有 2 个组件的 Python 可视化转换后的数据【英文标题】:Visualizing transformed data with Python with 2 components 【发布时间】:2016-07-15 00:41:29 【问题描述】:这是我试图通过首先运行 PCA 来分析的示例文件:
A01_01 A01_02 A01_03 A01_04 A01_05 A01_06 A01_07 A01_08 A01_09 A01_10 A01_11 A01_12 A01_13 A01_14 A01_15 A01_16 A01_17 A01_18 A01_19 A01_20 A01_21 A01_22 A01_23 A01_24 A01_25 A01_26 A01_27 A01_28 A01_29 A01_30 A01_31 A01_32 A01_33 A01_34 A01_35 A01_36 A01_37 A01_38 A01_39 A01_40 A01_41 A01_42 A01_43 A01_44 A01_45 A01_46 A01_47 A01_48 A01_49 A01_50 A01_51 A01_52 A01_53 A01_54 A01_55 A01_56 A01_57 A01_58 A01_59 A01_60 A01_61 A01_62 A01_63 A01_64 A01_65 A01_66 A01_67 A01_69 A01_70 A01_71
0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1
0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1
0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1
0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1
0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1
0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1
使用以下脚本:
#!/usr/bin/env python
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt('/Users/cmdb/Desktop/Lab6_GWAS/variants1.txt', skiprows=1)
pca = PCA(n_components=2)
fit = pca.fit_transform(data) #Fit is PCA(copy=True, n_components=2, whiten=False)
plt.figure()
plt.scatter(fit[:,0], fit[:,1])
plt.show()
请注意,我想绘制前两个组件,据我所知,我正在这样做
这是我得到的情节:
我想从中提取一些信息,并通过对前两个组件执行 PCA 来确保我做对了。
另外,当我将pca = pca(n_components)
中的n_components
更改为2 或5 时,没有任何变化。任何想法为什么或我做错了什么?
【问题讨论】:
您使用n_components=2
获得的两个组件应该与您使用n_components=5
获得的前两个组件相同,因此如果您只绘制它们不会有区别。不同之处在于,在第二种情况下,您将获得额外的组件。
【参考方案1】:
尝试打印结果的形状。
print (fit.shape)
返回的元组的第二个元素应与 n_components 相同。 正如documentation 中所说:n_components 代表了
要保留的组件数
如果您想可视化超过 2 或 3 维的数据,请查看 this page,也许您可以尝试使用 t-SNE 来减少数据的维数而不是 PCA(如果您关心的是可视化)。
【讨论】:
以上是关于使用带有 2 个组件的 Python 可视化转换后的数据的主要内容,如果未能解决你的问题,请参考以下文章
将UI文件转换为Python后编写打开文件代码-QTabWidget [重复]