def gradient_descent(x,y):
theta0=theta1=0
iteration=10000000
m=len(x)
alpha=0.000000001
for i in range(iteration):
y_pre=theta1*x+theta0 #equation for y_prediction
theta1d=-(1/m)*sum(x*(y_pre - y)) #finding derivative (modified)
theta0d=-(1/m)*sum(y_pre - y) #modified
theta1=theta1+alpha*theta1d
theta0=theta0+alpha*theta0d
#cost_func=(sum((y_pre - y)**2)/2m #modified
print("theta1",theta1,"theta0",theta0)
Уравнение для вычисления тета-значений: theta = theta - alpha * partial derivative of the cost function
. Обычно функция стоимости определяется как cost_func=(sum((y_pre - y)**2)/2m
(обратите внимание, что разница составляет y_pred-y
, а не y-y_pred
). Там для частной производной функции стоимости содержится y_pre - y
, а не y - y_pred
. Вот как вы должны рассчитать функцию стоимости и тета-значения. (Попробуйте разные альфа-значения, я не изменял альфа или количество итераций)