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


Posted in Python onJuly 12, 2020

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

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

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()

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

学习率:0.1,较合适

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

学习率:0.02,收敛变慢了

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

学习率:0.45,在最佳参数附近震荡

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

学习率:0.5,不收敛

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

Python 相关文章推荐
python基础教程之udp端口扫描
Feb 10 Python
Python中使用支持向量机SVM实践
Dec 27 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
python+pyqt5实现24点小游戏
Jan 24 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
Django contrib auth authenticate函数源码解析
Nov 12 Python
Python 利用flask搭建一个共享服务器的步骤
Dec 05 Python
python 实现的车牌识别项目
Jan 25 Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 Python
python简单验证码识别的实现过程
Jun 20 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 #Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 #Python
Django后端分离 使用element-ui文件上传方式
Jul 12 #Python
PyQt5-QDateEdit的简单使用操作
Jul 12 #Python
Python logging日志模块 配置文件方式
Jul 12 #Python
django rest framework 过滤时间操作
Jul 12 #Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 #Python
You might like
php学习之数据类型之间的转换代码
2011/05/29 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
python获取代码运行时间的实例代码
2018/06/11 Python
python+os根据文件名自动生成文本
2019/03/21 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
监察建议书范文
2014/03/12 职场文书
听课评语大全
2014/04/30 职场文书
党小组推荐意见
2015/06/02 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书