python应用Axes3D绘图(批量梯度下降算法)


Posted in Python onMarch 25, 2020

本文实例为大家分享了python批量梯度下降算法的具体代码,供大家参考,具体内容如下

问题:

将拥有两个自变量的二阶函数绘制到空间坐标系中,并通过批量梯度下降算法找到并绘制其极值点

大体思路:

首先,根据题意确定目标函数:f(w1,w2) = w1^2 + w2^2 + 2 w1 w2 + 500
然后,针对w1,w2分别求偏导,编写主方法求极值点
而后,创建三维坐标系绘制函数图像以及其极值点即可

具体代码实现以及成像结果如下:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D

#f(w1,w2) = w1^2 + w2^2 + 2*w1*w2 + 500
def targetFunction(W): #目标函数
 w1,w2 = W
 return w1 ** 2 + w2**2 + 2*w1*w2+500

def gradientFunction(W): #梯度函数:分别对w1,w2求偏导
 w1,w2 = W
 w1_grad = 2*w1+2*w2
 w2_grad = 2*w2 + 2*w1
 return np.array([w1_grad,w2_grad])

def batch_gradient_distance(targetFunc,gradientFunc,init_W,learning_rate = 0.01,tolerance = 0.0000001): #核心算法
 W = init_W
 target_value = targetFunc(W)
 counts = 0 #用于计算次数
 while counts<5000:
 gradient = gradientFunc(W)
 next_W = W-gradient*learning_rate
 next_target_value = targetFunc(next_W)
 if abs(next_target_value-target_value) <tolerance:
 print("此结果经过了", counts, "次循环")
 return next_W
 else:
 W,target_value = next_W,next_target_value
 counts += 1
 else:
 print("没有取到极值点")


if __name__ == '__main__':
 np.random.seed(0) #保证每次运行随机出来的结果一致
 init_W = np.array([np.random.random(),np.random.random()]) #随机初始的w1,w2
 w1,w2 = batch_gradient_distance(targetFunction,gradientFunction,init_W)
 print(w1,w2)
 #画图
 x1=np.arange(-10,11,1) #为了绘制函数的原图像
 x2=np.arange(-10,11,1)

 x1, x2 = np.meshgrid(x1, x2) # meshgrid :3D坐标系

 z=x1**2 + x2**2 + 2*x1*x2+500

 fig = plt.figure()
 ax = Axes3D(fig)
 ax.plot_surface(x1, x2, z) #绘制3D坐标系中的函数图像
 ax.scatter(w1,w2, targetFunction([w1,w2]), s=50, c='red') #绘制已经找到的极值点
 ax.legend() #使坐标系为网格状

 plt.show() #显示

函数以及其极值点成像如下(红点为极值点):

python应用Axes3D绘图(批量梯度下降算法)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python开发中module模块用法实例分析
Nov 12 Python
python函数的5种参数详解
Feb 24 Python
查看django执行的sql语句及消耗时间的两种方法
May 29 Python
Python Logging 日志记录入门学习
Jun 02 Python
pycharm重置设置,恢复默认设置的方法
Oct 22 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
Python3 mmap内存映射文件示例解析
Mar 23 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
opencv 图像滤波(均值,方框,高斯,中值)
Jul 08 Python
python3中calendar返回某一时间点实例讲解
Nov 18 Python
Jupyter Notebook内使用argparse报错的解决方案
Jun 03 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 #Python
python实现梯度下降和逻辑回归
Mar 24 #Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 #Python
python使用梯度下降算法实现一个多线性回归
Mar 24 #Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 #Python
python实现最速下降法
Mar 24 #Python
python实现梯度法 python最速下降法
Mar 24 #Python
You might like
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
json 定义
2008/06/10 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
Python的Django框架中的表单处理示例
2015/07/17 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
Python线性回归实战分析
2018/02/01 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
python如何操作mysql
2020/08/17 Python
Python如何telnet到网络设备
2021/02/18 Python
CSS3 简写animation
2012/05/10 HTML / CSS
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
奥利奥广告词
2014/03/20 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
警示教育片观后感
2015/06/17 职场文书
企业财务管理制度范本
2015/08/04 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript