浅谈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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
python实现排序算法
Feb 14 Python
python分割文件的常用方法
Nov 01 Python
Python实现给qq邮箱发送邮件的方法
May 28 Python
解决Pycharm出现的部分快捷键无效问题
Oct 22 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
django框架实现模板中获取request 的各种信息示例
Jul 01 Python
python实现扫雷小游戏
Apr 24 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
Python中快速掌握Data Frame的常用操作
Mar 31 Python
Python编程super应用场景及示例解析
Oct 05 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 高效率写法 推荐
2010/02/21 PHP
php分页示例分享
2014/04/30 PHP
PHP获取文件行数的方法
2015/06/10 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
jquery select操作的日期联动实现代码
2009/12/06 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
十分钟搞定pandas(入门教程)
2019/06/21 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
优秀员工表扬信
2014/01/17 职场文书
新学期班主任寄语
2014/01/18 职场文书
人资专员岗位职责
2014/04/04 职场文书
活动总结怎么写
2014/04/28 职场文书
倡议书格式模板
2014/05/13 职场文书
四风对照检查材料范文
2014/09/27 职场文书
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL