浅谈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基于xml parse实现解析cdatasection数据
Sep 30 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
python学生管理系统代码实现
Apr 05 Python
python破解zip加密文件的方法
May 31 Python
Python 带有参数的装饰器实例代码详解
Dec 06 Python
python简单实现AES加密和解密
Mar 28 Python
解决Django一个表单对应多个按钮的问题
Jul 18 Python
使用python实现数组、链表、队列、栈的方法
Dec 20 Python
Python短信轰炸的代码
Mar 25 Python
python爬虫学习笔记之pyquery模块基本用法详解
Apr 09 Python
python实现文件+参数发送request的实例代码
Jan 05 Python
详解运行Python的神器Jupyter Notebook
Jun 03 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中如何判断AJAX提交的数据
2012/02/05 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python分析学校四六级过关情况
2017/11/22 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
顶撞领导检讨书
2014/01/29 职场文书
六五普法规划实施方案
2014/03/21 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android