Нужна помощь в понимании умножения матричной функции в python - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь найти оптимизированное значение тета, чтобы минимизировать функцию стоимости, из курса Эндрю Нг по машинному обучению с использованием Python. Значения тета в моей программе неверны. Что я не могу понять здесь? Я пытаюсь узнать здесь ... извините за нуб вопрос

#Shapes of numpy arrays
#popx=(97,1)
#popxx=(97,2)#x in function
#profy=(97,1)#y in function

def gradientDescent(x,y,iterations=1500,alpha=0.01,theta=np.zeros(2).reshape(1,2)):
        cost=np.zeros(iterations)
        theta_Hist=[]
        m=len(profy)
        for i in range(iterations):
            print("Before Loop\n",theta)
            t=(alpha/m)*np.dot(popx.T,(np.dot(x,theta.T)-y))
            print(np.dot(popx.T,(np.dot(x,theta.T)-y)))
            theta=theta-t
            theta_Hist.append(theta)
            print("after\n",theta)
            cost[i]=computeCost(x,y,theta)
    gradientDescent(popxx,profy)

значения тета должны быть -3.24140214, 1.1272942

1 Ответ

0 голосов
/ 12 ноября 2019

Ваш код грязный, старайтесь избегать ненужных вложенных операций. Попробуйте это

import numpy as np

def computeCost(X,y,theta):
    m = len(y)
    predictions = np.dot(X,theta)
    squared_error = (predictions-y)**2
    cost = np.sum(squared_error)/(2*m)
    return cost


def gradientDescent(x,y,theta,iterations=1500,alpha=0.01):
    cost_Hist=[]
    theta_Hist=[]
    n=len(y)
    for i in range(iterations):
        prediction = np.dot(x,theta)
        error = prediction - y
        grad = np.dot(x.T,error)
        theta = theta - (alpha/n)*grad
        co = computeCost(x,y,theta)

        theta_Hist.append(theta)
        cost_Hist.append(co)
    return theta

init_thetas = np.zeros(shape=(2,1))
thetas = gradientDescent(X,y,init_thetas)
...