2014-08-29 77 views
0

我無法弄清楚是什麼阻止了我得到這個成本函數的輪廓圖。經過多次試驗和錯誤,我得到:用python循環和matplotlib繪製輪廓圖

ValueError: zero-size array to reduction operation minimum which has no identity 

如果我打印J它不給我任何值,只是一個100x100陣列充滿nan。這是原因嗎? J應該充滿成本價值,對吧?非常感謝您的幫助。

X,y,ComputeCost = defined earlier and 90% sure not the problem 
theta_zero = np.linspace(-10,10,100) 
theta_one = np.linspace(-1,4,100) 
L,Q = np.meshgrid(theta_zero,theta_one) 
J = np.zeros((len(theta_zero),len(theta_one))) 

for i in range(0,len(theta_zero)): 
    for j in range(0,len(theta_one)): 
     t = DataFrame([theta_zero[i],theta_one[j]]) 
     J[i,j] = ComputeCost(X,y,t) 

plt.contour(L,Q,J) 

回答

1

如果J只是nan S,那麼問題是在你產生Jcontour()呼叫的方式。

+0

謝謝。我想接下來的問題是爲什麼for循環讓我充滿了nan?現在,代碼在繪製輪廓時給我提供錯誤之前吐出所有值 - 每行一個值。不知道爲什麼他們沒有被存儲在J. – user2891518 2014-08-30 00:41:44

+0

因此,如果你使用一箇中間變量它出現在非南?即: 'foo = ComputeCost(X,y,t)''print foo'' J [i,j] = foo'如果'foo'輸出爲非非,那麼我也不知所措。 – aardvark 2014-08-30 00:47:16

+0

如果我創建了一些其他變量Z,並將其設置爲等於100X100數組,那麼我將在循環中得到與Z [i,j]相同的錯誤,就像我對J [i,j]所做的一樣。 – user2891518 2014-08-30 02:19:13