随机梯度下降算法作业

这里先画出100个测试数据和它的初始预测曲线,由图可看出,测试数据的拟合曲线更像是一条正比例函数

这里一开始姑且将预测曲线设置为y = w * x , w的初始值为0.1

 下面开始随机梯度下降算法,随机梯度下降区别于传统梯度下降表现在,一次训练过程只从这100个数据中随机抽取一个数据进行梯度下降,代码实现如下:

import random
import dataset
import matplotlib.pyplot as plt
xs, ys = dataset.get_beans(100)

# 画出训练数据的散点图
plt.title("Size-Toxicity Function", fontsize=12)
plt.xlabel("Size")
plt.ylabel("Toxicity")
plt.scatter(xs, ys)

# 画出初始预测曲线
w = 0.1
y_pre = w * xs
plt.plot(xs, y_pre)
plt.show()

# 拟定训练次数为100次
for _ in range(100):
    # 取随机数为0到(数据大小-1)的随机数生成随机索引用于随机拿取数据进行训练
    i = random.randint(0, xs.size-1)
    x = xs[i]
    y = ys[i]
    k = 2 * (x ** 2) * w + (-2 * x * y)
    alpha = 0.1
    w = w - alpha * k

    # 动态画出训练过程
    plt.clf()
    plt.scatter(xs, ys)
    y_pre = w * xs
    plt.xlim(0, 1)
    plt.ylim(0, 1.2)
    plt.plot(xs, y_pre)
    plt.pause(0.01)
# 展示最终预测结果
plt.show()

 训练中的截图如下

 

 最终训练结果如下

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值