2015-01-13 19 views
0

任何人都可以建議如何在pyscripter中使用內置函數PCA。作爲一個開始我導入PCA在pyscripter中使用內置函數(PCA)

from matplotlib.mlab import PCA 

然後碼區,

results = PCA(arr1) 
print("-----------------------PCA-----------------------") 
print(results) 

其中ARR1是從file.But我正在Attrubute誤差作爲讀數據集(數值):

Traceback (most recent call last): 
File "C:\Users\pooja\Documents\project\traingsom.py", line 282, in <module> 
results = PCA(arr1) 
File "C:\Python27\lib\site-packages\matplotlib\mlab.py", line 845, in __init__ 
n, m = a.shape 
AttributeError: 'list' object has no attribute 'shape' 

請幫忙..

回答

0

在mlab的源代碼中,它說'*a*: a numobservations x numdims array'。 你應該這樣使用它:

import numpy as np 
from matplotlib.mlab import PCA 

dataMatrix = np.array(aListOfLists) # Convert a list-of-lists into a numpy array. aListOfLists is the data points in a regular list-of-lists type matrix. 
myPCA = PCA(dataMatrix) # make a new PCA object from a numpy array object 

希望它有幫助。 :)

+0

謝謝..我修改了,但現在的錯誤是:回溯(最近調用最後一次): 文件「C:\ Users \ pooja \ Documents \ project \ pca.py」,第37行,在 myPCA = PCA(dataMatrix) 文件「C:\ Python27 \ lib \ site-packages \ matplotlib \ mlab.py」,第845行,在__init__中 n,m = a.shape ValueError:需要多個值才能解包。 ........... 我想知道這個PCA內置函數是否也有所有這些均值,協方差等計算 – Devi

+0

@Devi它似乎不是。你必須先通過正確的順序。 –