浅谈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程序与系统shell交互的方式
Apr 09 Python
Python中最常用的操作列表的几种方法归纳
Apr 24 Python
Python使用matplotlib绘制动画的方法
May 20 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
Django学习之文件上传与下载
Oct 06 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
利用jupyter网页版本进行python函数查询方式
Apr 14 Python
python解释器安装教程的方法步骤
Jul 02 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 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
超级简单的发送邮件程序
2006/10/09 PHP
php读取msn上的用户信息类
2008/12/05 PHP
php模板原理讲解
2013/11/13 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
php模拟post提交数据的方法
2015/02/12 PHP
php多重接口的实现方法
2015/06/20 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
js调用flash的效果代码
2008/04/26 Javascript
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
详解Python中的array数组模块相关使用
2016/07/05 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
详细分析python3的reduce函数
2017/12/05 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
数字漫画:comiXology
2020/06/13 全球购物
小学关爱留守儿童活动方案
2014/08/25 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript