python拟合曲线(小批量随机梯度下降)
生活随笔
收集整理的這篇文章主要介紹了
python拟合曲线(小批量随机梯度下降)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
深度學習書籍參考:https://tangshusen.me/Dive-into-DL-PyTorch/#/read_guide
import numpy as np
from matplotlib import pyplot as pltplt.ion()#開啟交互
X=np.linspace(-1,2,1000)
Y=X**3-X**2+X+0.5+np.random.rand(1000)*0.001 #生成樣本+噪聲w=np.zeros(4)#需要擬合的函數系數lr=0.01
for i in range(5000):index=np.random.choice(1000,8)x=X[index]y=Y[index]y_pred=w[0]*x**3+w[1]*x**2+w[2]*x+w[3]dy_pred=y_pred-yw[0]=w[0]-lr*np.dot(x**3,dy_pred)/8w[1]=w[1]-lr*np.dot(x**2,dy_pred)/8w[2]=w[2]-np.dot(x, dy_pred)/8w[3]=w[3]-lr*dy_pred.sum()/8if i%100==0:plt.clf()Y_pred=w[0]*X**3+w[1]*X**2+w[2]*X+w[3]plt.scatter(X,Y)plt.plot(X,Y_pred, c='r')plt.pause(0.001)
print(w)#打印擬合出的函數的系數
代碼效果:
總結
以上是生活随笔為你收集整理的python拟合曲线(小批量随机梯度下降)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现K-means算法
- 下一篇: 数字的处理与判断