浅谈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写的一个简单监控系统
Jun 19 Python
python爬虫获取京东手机图片的图文教程
Dec 29 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
python监控文件并且发送告警邮件
Jun 21 Python
python调用百度语音识别api
Aug 30 Python
利用Pycharm断点调试Python程序的方法
Nov 29 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
执行Django数据迁移时报 1091错误及解决方法
Oct 14 Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 27 Python
如何用Python绘制3D柱形图
Sep 16 Python
Django debug为True时,css加载失败的解决方案
Apr 24 Python
Pytorch DataLoader shuffle验证方式
Jun 02 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 使用post,get的一种简洁方式
2010/04/25 PHP
php数组去重实例及分析
2013/11/26 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
PHP之预定义接口详解
2015/07/29 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
Python的print用法示例
2014/02/11 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
大专生自荐信
2013/10/04 职场文书
写好自荐信要注意的问题
2013/11/10 职场文书
医校毕业生自我鉴定
2014/01/25 职场文书
《阳光》教学反思
2014/02/23 职场文书
开业庆典主持词
2014/03/21 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
撤诉状格式范本
2015/05/19 职场文书
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript