浅谈matplotlib 绘制梯度下降求解过程

 更新时间:2020年07月12日 11:06:46   作者:Michael阿明  
这篇文章主要介绍了浅谈matplotlib 绘制梯度下降求解过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

机器学习过程中经常需要可视化,有助于加强对模型和参数的理解。

下面对梯度下降过程进行动图演示,可以修改不同的学习率,观看效果。

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正态分布
X_b = np.c_[np.ones((100,1)),X] # c_行数相等,左右拼接

eta = 0.1 # 学习率
n_iter = 1000 # 迭代次数
m = 100 # 样本点个数
theta = np.random.randn(2,1) # 参数初始值

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,在最佳参数附近震荡


学习率:0.5,不收敛

到此这篇关于浅谈matplotlib 绘制梯度下降求解过程的文章就介绍到这了,更多相关matplotlib 梯度下降内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python判断图片宽度和高度后删除图片的方法

    python判断图片宽度和高度后删除图片的方法

    这篇文章主要介绍了python判断图片宽度和高度后删除图片的方法,涉及Python中os模块与Image模块的相关使用技巧,需要的朋友可以参考下
    2015-05-05
  • Python实现将横表和纵表任意转换的两种方法

    Python实现将横表和纵表任意转换的两种方法

    在日常做数据分析,接收到最多的表格是纵表,每个字段变量都有很长数据的长表,我们称之为纵向数据,但是,有时候,我们也会遇到横表,对于横向数据,我们会数据转化,将其转化为纵向数据,感兴趣的同学跟着小编一起来学习吧
    2023-12-12
  • Python 2/3下处理cjk编码的zip文件的方法

    Python 2/3下处理cjk编码的zip文件的方法

    今天小编给大家分享Python 2/3下处理cjk编码的zip文件的方法,在项目中经常会遇到这样的问题,小编特意分享到脚本之家平台,感兴趣的朋友跟随小编一起看看吧
    2019-04-04
  • pandas数据处理清洗实现中文地址拆分案例

    pandas数据处理清洗实现中文地址拆分案例

    因为后续数据分析工作需要用到地理维度进行分析,所以需要把login_place字段进行拆分成:国家、省份、地区。感兴趣的可以了解一下
    2021-06-06
  • python读写文件with open的介绍

    python读写文件with open的介绍

    这篇文章主要给大家分享了 python读写文件with open的介绍,使用python的过程中肯定少不了读取文件的操作,传统的形式是使用 直接打开、然后在操作、然后再关闭,接下来请和小编一起进入文章了解具体的内容吧
    2021-11-11
  • Python输出\u编码将其转换成中文的实例

    Python输出\u编码将其转换成中文的实例

    今天小编就为大家分享一篇Python输出\u编码将其转换成中文的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python+Opencv实现计算闭合区域面积

    Python+Opencv实现计算闭合区域面积

    这篇文章主要介绍了利用Python Opencv计算闭合区域的面积的原理以及实现代码,文中的讲解详细易懂,感兴趣的小伙伴快跟随小编一起学习一下吧
    2022-03-03
  • 使用coverage统计python web项目代码覆盖率的方法详解

    使用coverage统计python web项目代码覆盖率的方法详解

    这篇文章主要介绍了使用coverage统计python web项目代码覆盖率的方法,详细分析了coverage的安装以及coverage命令统计py文件相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • Pytorch使用DataLoader实现批量加载数据

    Pytorch使用DataLoader实现批量加载数据

    这篇文章主要介绍了Pytorch使用DataLoader实现批量加载数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python scipy求解非线性方程的方法(fsolve/root)

    python scipy求解非线性方程的方法(fsolve/root)

    今天小编就为大家分享一篇python scipy求解非线性方程的方法(fsolve/root),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11

最新评论