2014-07-17 73 views
0

我正在通過Cousera在線機器學習課程。這個類是在Matlab中講授的,但我試圖學習Python,所以我試圖在完成Matlab的工作後,用Python重寫任務。我有以下代碼:Python Numpy.matrix乘法錯誤

import numpy as n 

X = n.matrix(dataX) 
theta = n.zeros(shape=(2, 1)) 
predictions = n.matrix(X * theta) 

X/dataX是從CSV中拉入的97x2矩陣。 Theta是一個數組2x1的零,我試圖乘以X.我應該得到97x1數組零到預測的輸出。但我得到以下錯誤,而不是:

/Library/Frameworks/Python.framework/Versions/3.3/bin/python3 /Users/jsmith/Documents/python/Assign1/CostFunction.py 
Traceback (most recent call last): 
    File "/Users/jsmith/Documents/python/Assign1/CostFunction.py", line 24, in <module> 
    predictions = n.matrix(X * theta) 
    File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/matrixlib/defmatrix.py", line 341, in __mul__ 
    return N.dot(self, asmatrix(other)) 
ValueError: data type must provide an itemsize 

Process finished with exit code 1 

我也試過:

predictions = X * theta 

我也得到相同的「ValueError異常:數據類型必須提供itemsize」的錯誤。我究竟做錯了什麼?

+2

'dataX'是一個字符串嗎?或列表的列表?請告訴我們(至少是開頭)'repr(dataX)'。 – unutbu

回答

2

該消息是說該項目類型是錯誤的......還有一個類似的SO問題here 如果你已經從csv文件加載它,你可能已經結束了字符串。

例如如果你用csvreader告訴numpy的數據是數字的:

x=list(reader) 
result=numpy.array(x).astype('float') 
+0

是......就是這樣。 CSV導入爲某種類型的「