import matplotlib.pyplot as plt
import numpy as np
#1.初始化数据
X = np.linspace(0,1,num = 100).reshape(100,1)
print X
#模拟效果,预测值
noise = np.random.random((100,1)) /10 #100行 1列 /10 缩小10倍
# 2.目标系数
Y = 2 * X + 3 + noise
#观察效果
#创建一个画布
fig = plt.figure()
ax = plt.subplot(1,1,1) # 111代表 分为1行1列1个区域
ax.scatter(X,Y)
plt.ion() # 实时,每次梯度变化都会动态变化
#建立模型
w = np.random.random((1,1))
b = np.random.random((1,1))
I = np.ones((100,1))
#预测值
pre_y = X.dot(w) + I.dot(b)
ax.plot(X,pre_y)
#超参数
k = 0.01
for i in range(100):
d_w = X.T.dot(pre_y - Y)
d_b = I.T.dot(pre_y - Y)
w = w - k * d_w # -偏导
b = b - k * d_b
pre_y = X.dot(w) + I.dot(b)
ax.lines.pop(0) #把旧的替换
ax.plot(X,pre_y)
plot.pause(0.1) # 每隔一秒更新