文章介绍
- 文章配图来自网络
- 个人学习笔记,推荐直接买课去学习
- 得懂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)