Попытка построить градиентный спуск для линейной регрессии. Получите эту ошибку, TypeError: Input z должен быть двумерным массивом - PullRequest
0 голосов
/ 22 апреля 2020

Я пытался реализовать линейную регрессию с помощью одного объекта и затем построить градиентный спуск в 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.

Может кто-нибудь помочь, пожалуйста? Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...