我有15个数据集,它们全部包含62个信息点,并且我试图对它们进行pca分析,第一个数据集中的每个点都对应于第二个和第三个数据集中的相同点,等等。但是,目前,我的代码如下产生的平均值是62点,而不是15,我只在代码中包含3。为什么当我在数组中交换x和y时会说“我们假设a中的数据是用numrows> numcols进行组织的”。我该怎么做才能改变这一点?这是我的代码。
import numpy as np
import matplotlib
from matplotlib.mlab import PCA
x=np.zeros((62,3))
a=np.genfromtxt('1.txt').T[2] #list 62numbers
x[:,0]=a
print x[:,0]
b=np.genfromtxt('2.txt').T[2] #list 62numbers
x[:,1]=b
c=np.genfromtxt('3.txt').T[2] #list 62numbers
x[:,2]=c
results=PCA(x)
print results.mu
最佳答案
PCA
函数接受形状为(M,N)
的数组,其中M
是观察数,而N
是数据的维数(每个观察的特征数)。错误消息告诉您没有足够的样本来执行PCA。如果M < N
,则PCA失败,因为在这种情况下,您采样不足(协方差矩阵是奇异的)。
关于python - 为什么在matplotlib中numrow> numcol for PCA,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18057201/