【机器学习】梯度下降 (python代码)

梯度下降 (python代码)

文章介绍

  • 文章配图来自网络
  • 个人学习笔记,推荐直接买课去学习
  • 得懂python,本文代码可直接跑,环境基于[ PyCharm 2022.2 ]

1.前提

  • 会求函数的斜率,我会!!so直接开始
  • 斜率公式

y=2 x 2 x^2 x2+bx+c 的斜率
k=2ax+b

  • 一个豆豆的代价函数

e=(y0-w* x 0 x_0 x0)^2
= x 0 2 x_0^2 x02 * w 2 w^2 w2-2 x 0 x_0 x0 y 0 y_0 y0*w+ y 0 2 y_0^2 y02

  • 则代价函数的斜率

k=2 x 2 x^2 x2w -2xy

2.代码实现

import matplotlib
import numpy as np
from matplotlib import pyplot as plt
matplotlib.use('TkAgg')


# 生产测试数据
def get_beans(counts):
    xs: object = np.random.rand(counts)
    xs = np.sort(xs)
    ys = [1.2 * x + np.random.rand() / 10 for x in xs]
    return xs, ys


# 获取数据
xs, ys = get_beans(100)
# print(xs)  # 豆豆大小
# print(ys)  # 豆豆毒性

# 画出所有的豆豆位置
plt.title("toxicity-size", 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()

for i in range(100):
    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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guistar~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值