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

Python中从头开始的梯度下降会产生错误的输出,python,linear-regression,gradient-descent,Python,Linear Regression,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, 6

我试图在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]的重量时,它将是负数。有人能帮我吗


请格式化您的代码您是否检查了已知正确的梯度下降实现(例如,来自标准框架)是否为您随机创建的数据生成正确的结果?梯度下降收敛在很大程度上取决于您选择的混合参数
alpha
值。你试过使用稍微大一点/小一点的alpha吗?@IonicSolutions先生,到目前为止,除了Scikit Learn之外,我还没有tensorflow或任何其他ML库,我认为它们中没有梯度下降功能。@Bazingaa先生,尽管我改变了alpha(增加和减少),但模型预测结果仅为负值。