梯度下降法解决线性模型

1,梯度下降法

给定一个数据集,x_data、y_data。寻找y=wx模型的w最优解。 代码如下:

import numpy as np
import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

scope_list = []
w_list = []

w = 60

#学习率
k = 0.01
# 

for i in range(200):
    # 计算cost(loss的和)
    loss_sum = 0
    for x_val, y_val in zip(x_data,y_data):
        loss_sum += 2 * x_val * (w*x_val - y_val)
    cost = loss_sum / 3
    
    # 计算本轮w
    w = w - k * cost
    print(w)
    scope_list.append(i)
    w_list.append(w)

plt.plot(scope_list,w_list)
plt.xlabel("scope")
plt.ylabel("W")
plt.show()

2,batch(随机梯度下降法)

代码如下:


import random
import numpy as np
import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

scope_list = []
w_list = []

w = 60

#学习率
k = 0.01

for i in range(200):
    # 计算cost(即随机一个loss当cost用)
    rand = random.randint(0,2)
    cost = 2 * x_data[rand] * (w*x_data[rand] - y_data[rand])
    
    # 计算本轮w
    w = w - k * cost
    print(w)
    scope_list.append(i)
    w_list.append(w)

plt.plot(scope_list,w_list)
plt.xlabel("scope")
plt.ylabel("W")
plt.show()

全部评论

相关推荐

牛客737698141号:他们可以看到在线简历的。。。估计不合适直接就拒了
点赞 评论 收藏
分享
10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务