使用带有 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 [重复]

五个免费开源的数据挖掘软件

将十进制从文本框转换为带有 2 个小数点的变量 [重复]

如何使用钩子将 React 类组件转换为功能组件

ReactJs - 将带有嵌套 React 组件的原始 HTML 转换为 JSX

将字符串转换为带有模式的几个变量