浅谈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发送邮件附件以定时备份MySQL的教程
Apr 25 Python
python创建进程fork用法
Jun 04 Python
python Django框架实现自定义表单提交
Mar 25 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
python 换位密码算法的实例详解
Jul 19 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
python 实现识别图片上的数字
Jul 30 Python
Django 设置多环境配置文件载入问题
Feb 25 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
Python extract及contains方法代码实例
Sep 11 Python
python利用opencv保存、播放视频
Nov 02 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中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
js中文逗号转英文实现
2014/02/11 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
python3.8下载及安装步骤详解
2020/01/15 Python
python序列类型种类详解
2020/02/26 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
PyQt 如何创建自定义QWidget
2021/03/24 Python
租车协议书范本
2014/04/22 职场文书
个人安全承诺书
2014/05/22 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
2014年公务员工作总结
2014/11/18 职场文书
教师工作态度自我评价
2015/03/05 职场文书
2015年外联部工作总结
2015/04/03 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏