我试图在随机数据中实现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]的权重时,它的值为负。有人可以在这里帮助我吗?