浅谈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异步任务队列示例
Apr 01 Python
python使用正则表达式分析网页中的图片并进行替换的方法
Mar 26 Python
详谈python http长连接客户端
Jun 12 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
vscode 远程调试python的方法
Dec 01 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
Django时区详解
Jul 24 Python
Python面向对象封装操作案例详解
Dec 31 Python
Python日志syslog使用原理详解
Feb 18 Python
python框架flask入门之环境搭建及开启调试
Jun 07 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
我的论坛源代码(六)
2006/10/09 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
关于js遍历表格的实例
2013/07/10 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
Python可跨平台实现获取按键的方法
2015/03/05 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
python实现大量图片重命名
2020/03/23 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
行政人事岗位职责
2014/03/17 职场文书
公司离职证明标准范本
2014/10/05 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS