浅谈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中的生成器及其与迭代器的差异
Jun 20 Python
python访问抓取网页常用命令总结
Apr 11 Python
python读取文件名称生成list的方法
Apr 27 Python
Python selenium实现微博自动登录的示例代码
May 16 Python
python实现复制文件到指定目录
Oct 16 Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 Python
Python tkinter三种布局实例详解
Jan 06 Python
python库skimage给灰度图像染色的方法示例
Apr 27 Python
Python中有几个关键字
Jun 04 Python
python+selenium小米商城红米K40手机自动抢购的示例代码
Mar 24 Python
Python读取文件夹下的所有文件实例代码
Apr 02 Python
Python实现查询剪贴板自动匹配信息的思路详解
Jul 09 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/05/16 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
初一科学教学反思
2014/01/27 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
个人银行贷款担保书
2014/04/01 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
保密协议书范本
2014/04/22 职场文书
校外活动方案
2014/08/28 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js