浅谈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单线程实现多个定时器示例
Mar 30 Python
详解Python中的from..import绝对导入语句
Jun 21 Python
python多线程socket编程之多客户端接入
Sep 12 Python
简单实现python画圆功能
Jan 25 Python
基于python requests库中的代理实例讲解
May 07 Python
python 获取一个值在某个区间的指定倍数的值方法
Nov 12 Python
解决Python中定时任务线程无法自动退出的问题
Feb 18 Python
python实现AES加密与解密
Mar 28 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
如何利用python创作字符画
Jun 25 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
模拟flock实现文件锁定
2007/02/14 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
python 从远程服务器下载东西的代码
2013/02/10 Python
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
老师推荐信
2013/10/28 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
监察建议书范文
2014/03/12 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
大学开学计划书
2014/04/30 职场文书
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电