【发布时间】:2018-01-02 04:14:06
【问题描述】:
我刚刚完成了对 14 个变量的 PCA 分析,我选择将这些变量压缩为 2 个分量。
pca = PCA(n_components=2)
pca.fit(z)
a = pca.fit_transform(z)
这给出的输出格式为:
[[ -3.84514275e+00 -1.19829226e-01]
[ -4.78476227e+00 -1.35986090e-01]
[ -2.26702900e+00 -1.19665853e+00]
[ -5.01021616e+00 2.76005130e+00]
[ -5.57580326e+00 -2.00656680e+00]
[ -5.08184415e+00 -3.68721491e+00]
[ -3.41505366e+00 -7.61184868e-01]
[ -4.92439159e+00 -1.82147509e+00]
...
[ -3.34931300e+00 7.57884906e-01]]
我想做以下事情:
在散点图上绘制每个观测值,PC1 (x) 是每个数组中的第一个值,PC2 (y) 是第二个值。
根据来自初始 pre-PCA 数据的相应标签类型(即 A=red、B=blue、C=green 等)为每个观察结果着色。
使用来自初始 PCA 前数据的观察名称(即 John、Peter、Sally 等)标记 SELECTED(不是所有)观察
非常感谢任何/所有这些问题的帮助。
值得注意的是,我尝试通过以下方式进行分散:
plt.scatter(a[1], a[2])
plt.show()
但显然这不起作用,因为我的 a 输出没有用逗号分隔,只会绘制 2 个点。无法帮助我解决这个问题,因此非常感谢 SO 的意见。
编辑:
表格中的数据集:
John, A, var1, var2, var3, ..., var14
Peter, A, var1, var2, var3, ..., var14
Sally, B, var1, var2, var3, ..., var14
Cath, C, var1, var2, var3, ..., var14
Jim, A, var1, var2, var3, ..., var14
我正在寻找类似的东西:
【问题讨论】:
-
向我们展示一个带有标签的代表性数据集
-
你的数组是二维的,所以你需要用两个索引来索引它。
a[:,0]用于第一列,a[:,1]用于第二列。除了它真的不清楚实际问题是什么。 -
感谢欧内斯特,这解决了问题 1。关于 2 和 3 的任何想法?
-
您是否在 Google 上搜索过“如何为 matplotlib 散点图着色”或“如何注释 matplotlib 图”?
-
是的,但这不像引用颜色那么简单,因为我需要查看以前未转换的数据集来应用所述颜色。
标签: python matplotlib pca