淺談matplotlib 繪制梯度下降求解過程
更新時間:2020年07月12日 11:06:46 作者:Michael阿明
這篇文章主要介紹了淺談matplotlib 繪制梯度下降求解過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
機器學習過程中經(jīng)常需要可視化,有助于加強對模型和參數(shù)的理解。
下面對梯度下降過程進行動圖演示,可以修改不同的學習率,觀看效果。
import numpy as np import matplotlib.pyplot as plt from IPython import display X = 2*np.random.rand(100,1) y = 4+3*X+np.random.randn(100,1) # randn正態(tài)分布 X_b = np.c_[np.ones((100,1)),X] # c_行數(shù)相等,左右拼接 eta = 0.1 # 學習率 n_iter = 1000 # 迭代次數(shù) m = 100 # 樣本點個數(shù) theta = np.random.randn(2,1) # 參數(shù)初始值 plt.figure(figsize=(8,6)) mngr = plt.get_current_fig_manager() # 獲取當前figure manager mngr.window.wm_geometry("+520+520") # 調整窗口在屏幕上彈出的位置,注意寫在打開交互模式之前 # 上面固定窗口,方便screentogif定位錄制,只會這種弱弱的方法 plt.ion()# 打開交互模式 plt.rcParams["font.sans-serif"] = "SimHei"# 消除中文亂碼 for iter in range(n_iter): plt.cla() # 清除原圖像 gradients = 2/m*X_b.T.dot(X_b.dot(theta)-y) theta = theta - eta*gradients X_new = np.array([[0],[2]]) X_new_b = np.c_[np.ones((2,1)),X_new] y_pred = X_new_b.dot(theta) plt.axis([0,2,0,15]) plt.plot(X,y,"b.") plt.plot(X_new,y_pred,"r-") plt.title("學習率:{:.2f}".format(eta)) plt.pause(0.3) # 暫停一會 display.clear_output(wait=True)# 刷新圖像 plt.ioff()# 關閉交互模式 plt.show()
學習率:0.1,較合適
學習率:0.02,收斂變慢了
學習率:0.45,在最佳參數(shù)附近震蕩
學習率:0.5,不收斂
到此這篇關于淺談matplotlib 繪制梯度下降求解過程的文章就介紹到這了,更多相關matplotlib 梯度下降內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
- python matplotlib坐標軸設置的方法
- Python設置matplotlib.plot的坐標軸刻度間隔以及刻度范圍
- 學習python中matplotlib繪圖設置坐標軸刻度、文本
- python學習之matplotlib繪制散點圖實例
- Python使用matplotlib繪制動畫的方法
- python繪圖庫Matplotlib的安裝
- python Matplotlib畫圖之調整字體大小的示例
- Python利用matplotlib.pyplot繪圖時如何設置坐標軸刻度
- 用matplotlib畫等高線圖詳解
- python中Matplotlib實現(xiàn)繪制3D圖的示例代碼
- matplotlib設置legend圖例代碼示例