2016-11-25 56 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