def gradient_descent_runner(b, k):
# 计算数据总数
m = float(len(x_data))
for i in range(epochs):
# 计算梯度总和求平均
b_grad = 0
k_grad = 0
for j in range(0, len(x_data)):
b_grad += (1 / m) * ((k * x_data[j] + b) - y_data[j])
k_grad += (1 / m) * x_data[j] * ((k * x_data[j] + b) - y_data[j])
# 更新b和k
b = b - (Ir * b_grad)
k = k - (Ir * k_grad)
return b, k
def gradient_descent_runner(b, k):
# 计算数据总数
m = float(len(x_data))
b_grad = 0
k_grad = 0
for i in range(epochs):
# 计算梯度总和求平均
for j in range(0, len(x_data)):
b_grad += (1 / m) * ((k * x_data[j] + b) - y_data[j])
k_grad += (1 / m) * x_data[j] * ((k * x_data[j] + b) - y_data[j])
# 更新b和k
b = b - (Ir * b_grad)
k = k - (Ir * k_grad)
return b, k
方法一赋值在循环里面,b_grad和g_grad每次循环都会先重置为0,所以最终只有最后一个循环的结果
方法二赋值在循环外面,b_grad和g_grad会叠加每次循环的结果,最后得到所有循环的总合