我無法使用vq.whiten
從scipy.cluster
正常化我的數據。我正在傳遞一個數組,其中缺少每個要素的平均值填充的特徵值。正在獲取AttributeError:sqrt in vq.whiten
它卡住就行是:
data = scipy.cluster.vq.whiten(self.imputed)
這是我使用替換丟失數據的代碼。
imputed = np.array([self.masked[:,i].filled(self.masked[:,i].mean())
for i in range(np.shape(self.masked)[1])])
self.imputed = np.transpose(imputed)
我敢肯定還有一個更好的方法來完成這部分,除了它似乎打破了我的代碼。這似乎是一種難以實現的方式,通常意味着Python有更好的方式。
我試着把我發送給whiten
的數組多少分了下來,但是不管我在Traceback中得到了什麼。所以我在什麼來嘗試下虧本
Traceback (most recent call last):
File "C:\Users\jamie.bull\workspace\Metadata\src\draft_workflow.py", line 87, in <module>
dataset.cluster()
File "C:\Users\jamie.bull\workspace\Metadata\src\draft_workflow.py", line 59, in cluster
data = scipy.cluster.vq.whiten(self.imputed)
File "C:\Enthought\Python27\lib\site-packages\scipy\cluster\vq.py", line 131, in whiten
std_dev = std(obs, axis=0)
File "C:\Enthought\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 2467, in std
return std(axis, dtype, out, ddof)
AttributeError: sqrt
聚類正常工作與同一數據集,沒有任何丟失的數據。
編輯: 我嘗試打印出每個項目的類型imputed
兩個完整的數據集,並使用一個與缺失數據:
for item in imputed:
print type(item)
這兩者之間的區別在於,當所述沒有被調用的平均替換和轉置的版本每行有一個numpy.ndarray
,而被平均替換的版本每列有一個。
您可以顯示更多追溯的:
在OP出錯行可以替換爲? – tiago
編輯顯示完整的追溯。我很確定問題在於我如何創建'推定'。我出來了一個1D numpy數組,而我想要的是一個2D numpy數組。 –
是的,你正在設置的是一維數組,並且正在打破'vq.whiten'。我建議擺脫列表理解('[a for b in c]'),並且只是做一個循環來替換你丟失的數據。 – tiago