Я пытался реализовать линейную регрессию с помощью одного объекта и затем построить градиентный спуск в 3D. Функция работает. Но я не могу подготовить это. Вот мой код Здесь X и y - списки из 97 элементов каждый.
def computeCost(X, y, li):
y1 = li[0]*X['00'] + li[1]*X[0]
return sum(np.sqrt((y1-y)**2))/(2*len(df))
li = [0, 0]
i = 1500
def gradientDecsent(X, y, li, alpha, i):
th0 = [0]
th1 = [0]
J = []
k = 0
while k<i:
j = computeCost(X, y, li)
J.append(j)
y1 = li[0] + li[1]*X[0]
temp0 = li[0] - alpha*(sum(y1-y)/97)
temp1 = li[1] - alpha*(sum((y1-y)*X[0])/97)
li[0] = temp0
li[1] = temp1
th0.append(li[0])
th1.append(li[1])
k += 1
fig = plt.figure()
ax = plt.axes(projection='3d')
X, Y = np.meshgrid(th0, th1)
ax.contour3D(X, Y, J, 50, cmap='binary')
ax.set_xlabel('th0')
ax.set_label('th1')
ax.set_label('J')
plt.show()
return j, li
Я получаю следующую ошибку:
TypeError: Input z must be a 2D array.
Может кто-нибудь помочь, пожалуйста? Заранее спасибо