从头开始在Python中进行梯度下降会产生错误的输出

时间:2018-08-10 12:55:52

标签: python linear-regression gradient-descent

我试图在随机数据中实现Gradient Descent,以根据python中的身高和性别来预测体重。以下是我仅使用随机值以及为解决该问题而导出的一组方程式创建的数据集。 这是python代码:

import numpy as np

def gradient(curr_x,curr_y,curr_z):
  x = np.array([[170, 0], [172, 1], [175, 1], [176, 0], [182, 0], [183, 1], [189, 1]])
  y = np.array([65, 63, 68, 69, 73, 76, 75])
  N=len(x)
  x_grad,y_grad,z_grad=0,0,0
  for i in range(7):
   x_grad = x_grad + (1/N)*((curr_x + curr_y * x[i,0] + curr_z * x[i,1])-y[i])
   y_grad = y_grad + (1/N)*((curr_x + curr_y * x[i,0] + curr_z * x[i,1])-y[i])*x[i,0]
   z_grad = z_grad + (1/N)*((curr_x + curr_y * x[i,0] + curr_z * x[i,1])-y[i])*x[i,1]


 new_x=curr_x-0.0001*x_grad
 new_y=curr_y-0.0001*y_grad
 new_z=curr_z-0.0001*z_grad

 return new_x,new_y,new_z

x,y,z=0,0,0
for i in range(800):
 x,y,z=gradient(x,y,z)

print(x,y,z)

我的问题是它给出了非常错误的系数和截距。当我预测[174,0]的权重时,它的值为负。有人可以在这里帮助我吗?

Equations Derived

Raw Dataset

0 个答案:

没有答案