2016-11-25 57 views
0

我Python中的新手,并且在这之后https://stackoverflow.com/a/13224566/主成分分析法在Python不工作

import numpy as np 
import matplotlib.pyplot as plt 

from matplotlib.mlab import PCA 

pcadata = array(1,2,3) 
pcaresults = PCA(pcadata) 

print(pcaresults) 

它给错误(PCA):pcadata =阵列(1,2,3) NameError:名字'array'未定义 背景:我在Windows环境下使用Pydev Eclipse中的Python

+0

阅读评论...从链接复制...”我想你想添加和更改以下命令@ user2988577:import numpy as np and data = np.array(np.random.randint(10, size =(10,3)))然后我会建议按照这个教程来帮助你看看如何绘制blog.nextgenetics.net/?e=42“ – NaN

回答

0

数组并没有在python本身中实现,而是在模块numpy中实现。使用np.array([1,2,3])生成包含整数的一维数组[1,2,3]。

为了进行主成分分析,您必须具有比自由度更多的向量(即 - 您必须具有比列更多的行)。因此,您应该设置pcadata至少有三行。

`pcadata = np.array([[1,2,3],[4,5,6],[6,7,8]])` 

您在以下评论中提问,如何访问pcaresults值?您可以使用print(pcaresults.a)访问输入的归一化中心版本。如果您需要pcaresults的其他一些属性,则应尝试help(pcaresults)以查看pcaresults中包含的内容。 “

+0

谢谢@mark,但现在的错误是:pcadata = np.array( 1,2,3) ValueError:只接受2个非关键字参数 – Jack

+0

Np @ Jack。如果你看看上面的解决方案,在1,2,3附近有一组方括号。 python中的方括号表示一个列表。你为什么需要给np.array一个列表? numpy的函数数组使用一个类似列表的参数并将其转换为数组。目前,你正在给它三个参数,每个参数都不是类似列表的。 –

+0

哦,我的坏@马克,感谢,对于修正 我得到了它 还行必须比列较大 当我打印结果 打印(类型(pcaresults)) 打印(pcaresults) 它说 <类'matplotlib.mlab.PCA'> 我怎样才能得到它的值? – Jack