浅谈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实现绘制树枝简单示例
Jul 24 Python
Python实现简单截取中文字符串的方法
Jun 15 Python
Python合并两个字典的常用方法与效率比较
Jun 17 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
Python自动化运维之IP地址处理模块详解
Dec 10 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
python 实现从高分辨图像上抠取图像块
Jan 02 Python
python单元测试框架pytest的使用示例
Oct 07 Python
Python运算符+与+=的方法实例
Feb 18 Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 Python
python munch库的使用解析
May 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
PHP+DBM的同学录程序(1)
2006/10/09 PHP
解析php中反射的应用
2013/06/18 PHP
php读取本地json文件的实例
2018/03/07 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
python自动安装pip
2014/04/24 Python
django站点管理详解
2017/12/12 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
基于Python把网站域名解析成ip地址
2020/05/25 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
python绘制汉诺塔
2021/03/01 Python
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
高中语文课后反思
2014/04/27 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
2015年教师新年寄语
2014/12/08 职场文书
建国大业观后感800字
2015/06/01 职场文书
致运动员赞词
2015/07/22 职场文书
2016高考寄语集锦
2015/12/04 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers