Python 2.7 梯度下降算法的Python实现isn';行不通

Python 2.7 梯度下降算法的Python实现isn';行不通,python-2.7,gradient-descent,Python 2.7,Gradient Descent,我正在尝试为简单线性回归实现一个梯度下降算法。由于某种原因,它似乎不起作用 来自未来进口部的 随机输入 def错误(x_i,z_i,θ0,θ1): 返回z_i-θ0-θ1*x_i def平方误差(x_i,z_i,θ0,θ1): 返回错误(x_i,z_i,θ0,θ1)**2 def mse_fn(x,z,θ0,θ1): m=2*len(x) zip(x,z)中x_i,z_i的返回和(x_i,z_i,θ0,θ1)平方误差/m def mse_梯度(x,z,θ0,θ1): m=2*len(x) gra

我正在尝试为简单线性回归实现一个梯度下降算法。由于某种原因,它似乎不起作用

来自未来进口部的

随机输入
def错误(x_i,z_i,θ0,θ1):
返回z_i-θ0-θ1*x_i
def平方误差(x_i,z_i,θ0,θ1):
返回错误(x_i,z_i,θ0,θ1)**2
def mse_fn(x,z,θ0,θ1):
m=2*len(x)
zip(x,z)中x_i,z_i的返回和(x_i,z_i,θ0,θ1)平方误差/m
def mse_梯度(x,z,θ0,θ1):
m=2*len(x)
grad_0=zip(x,z)中x_i,z_i的和(错误(x_i,z_i,θ0,θ1))/m
grad_1=和(误差(x_i,z_i,θ0,θ1)*x_i表示x_i,z_i在zip(x,z))中的值/m
返回梯度0,梯度1
def最小化批次(x,z,mse_fn,mse_梯度_fn,θ0,θ1,公差=0.000001):
台阶尺寸=0.01
θ0=θ0
θ1=θ1
值=mse_fn(x,z,θ0,θ1)
尽管如此:
梯度0,梯度1=均方误差梯度(x,z,θ0,θ1)
下一步θ0=θ0-步长尺寸*梯度0
下一步θ1=θ1-步长尺寸*梯度1
next_值=mse_fn(x,z,next_θ0,θ1)
如果abs(值-下一个值)<公差:
返回θ0,θ1
其他:
θ0,θ1,值=下一个θ0,下一个θ1,下一个θ值
#数据
x=[i+1表示范围(40)内的i]
y=[random.randrange(1,30)表示范围(40)中的i]
z=[2*x_i+y_i+(y_i/7)表示zip中的x_i,y_i(x,y)]
θ0,θ1=[random.randint(-10,10)表示范围(2)内的i]
q=最小化批次(x,z,mse_fn,mse_梯度,θ0,θ1,公差=0.000001)
运行时,出现以下错误:
返回错误(x_i,z_i,θ0,θ1)**2溢出错误:(34,“结果太大”)

只要您的算法是正确的,这似乎已经被回答过很多次了。你是偶然参加机器学习课程的介绍吗?:]猜对了!我正在看Joel Grus的《从头开始的数据科学》一书,同时我在看Andrew Ng的CS229讲座。很好,这是有趣的东西,Ng教授很出色。祝你好运