scipy中的optimize子包中提供了常用的最优化算法函数实现,我们可以直接调用这些函数完成我们的优化问题。

scipy.optimize包提供了几种常用的优化算法。 该模块包含以下几个方面

使用各种算法(例如BFGS,Nelder-Mead单纯形,牛顿共轭梯度,COBYLA或SLSQP)的无约束和约束最小化多元标量函数(minimize())

全局(蛮力)优化程序(例如,anneal(),basinhopping())

最小二乘最小化(leastsq())和曲线拟合(curve_fit())算法

标量单变量函数最小化(minim_scalar())和根查找(newton())

使用多种算法(例如,Powell,Levenberg-Marquardt混合或Newton-Krylov等大规模方法)的多元方程系统求解

在用python实现逻辑回归和线性回归时,使用梯度下降法最小化cost function,用到了fmin_tnc()和minimize()。

一、fmin_tnc()

有约束的多元函数问题,提供梯度信息,使用截断牛顿法。

调用:

scipy.optimize.fmin_tnc(func, x0, fprime=None, args=(), approx_grad=0, bounds=None, epsilon=1e-08, scale=None, offset=None, messages=15, maxCGit=-1, maxfun=None, eta=-1, stepmx=0, accuracy=0, fmin=0, ftol=-1, xtol=-1, pgtol=-1, rescale=-1, disp=None, callback=None)

最常使用的参数:

func:优化的目标函数

x0:初值

fprime:提供优化函数func的梯度函数,不然优化函数func必须返回函数值和梯度,或者设置approx_grad=True

approx_grad :如果设置为True,会给出近似梯度

args:元组,是传递给优化函数的参数

返回:

x : 数组,返回的优化问题目标值

nfeval : 整数,function evaluations的数目

在进行优化的时候,每当目标优化函数被调用一次,就算一个function evaluation。在一次迭代过程中会有多次function evaluation。这个参数不等同于迭代次数,而往往大于迭代次数。

rc : int,Return code, see below

例子:

result = opt.fmin_tnc(func=costf_reg,x0=theta,args=(X,y,1),fprime=gredient_reg)

(array([ 1.27271026, 1.18111686, 0.62529965, -1.43166928, -0.91743189,

-2.01987399, -0.17516292, -0.35725404, -0.36553118, 0.12393227,

-1.19271299, -0.27469165, -0.61558556, -0.05098418, -1.45817009,

-0.45645981, -0.29539513, -0.27778949, -0.04466178, -0.206033,

-0.2421784 , -0.92467487, -0.1438915 , -0.32742405, 0.0155576,

-0.29244868, 0.02779373, -1.04319154]), 32, 1)

二、minimize()

调用:

scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None,callback=None, options=None)

参数:

fun :优化的目标函数

x0 :初值,一维数组,shape(n,)

args :元组,可选,额外传递给优化函数的参数

method:求解的算法,选择TNC则和fmin_tnc()类似

jac:返回梯度向量的函数

返回:

返回优化结果对象,x:优化问题的目标数组。success: True表示成功与否,不成功会给出失败信息。

例子:

result = opt.minimize(fun=costf_reg, x0=theta, args=(X,y,2), method='TNC')print(result)

fun:0.5740215331747713jac: array([-1.11983756e-03, -3.17176285e-03, 1.66888725e-04, -3.80251386e-04,5.17319521e-04, 5.48006085e-05, -1.71642700e-03, -9.40103551e-04,2.54840593e-04, 1.63347114e-04, -4.23616697e-04, 9.04154529e-04,-7.58726415e-05, 3.3874014……])

message:'Converged (|f_n-f_(n-1)| ~= 0)'nfev:192nit:20status:1success: True

x: array([0.89832911, 0.72816704, 0.32672603, -0.8722403 , -0.49704549,-1.37221312, -0.16553916, -0.29805388, -0.18577737, 0.02011522,-0.78541694, -0.0979966 ,…… ])

python实例 优化目标函数_Scipy优化算法--scipy.optimize.fmin_tnc()/minimize()相关推荐

  1. 高级优化算法scipy.optimize

    scipy中的optimize子包中提供了常用的最优化算法函数实现,我们可以直接调用这些函数完成我们的优化问题. scipy.optimize包提供了几种常用的优化算法. 该模块包含以下几个方面 使用 ...

  2. 贝叶斯优化算法python实例_贝叶斯优化/Bayesian Optimization

    最近心情不好,写篇文章让大家开心一下吧.介绍一下世界上最好的算法:贝叶斯优化. 背景介绍 近年来深度神经网络大火,可是神经网络的超参(hyperparameters)选择一直是一个问题,因为大部分时候 ...

  3. Python实例介绍正则化贪心森林算法(附代码)

    作者:Ankit Chaoudhary 翻译:笪洁琼 校对:梁傅淇 本文共3515字,建议阅读7分钟. 通过本文与大家讨论一个被称为正则化的贪心森林算法. 引言 作为一名参与多个机器学习竞赛数据科学家 ...

  4. python中def root的用法_python scipy optimize.root_scalar用法及代码示例

    查找标量函数的根. 参数: f:callable寻找根源的函数. args:tuple, 可选参数额外的参数传递给目标函数及其派生函数. method:str, 可选参数bracket:A seque ...

  5. python scipy.optimize.minimize多变量多参数优化

    python scipy.optimize.minimize多变量多参数优化 x是一维变量,无超参数 x是二维变量,无超参数,带bounds x是二维变量,有一个超参数,带bounds x是二维变量, ...

  6. python网页优化公司_使用python优化scipy.optimize.minimize公司

    我将逐行检查您的代码,并强调一些问题:from scipy.optimize import minimize import numpy as np prices=np.array([[1.5,50,3 ...

  7. python中的优化器有哪些_Python SciPy 优化器(Optimizers)

    1.SciPy优化器 优化器是SciPy中定义的一组过程,它们可以找到函数的最小值或方程式的根. 2.优化函数 本质上,机器学习中的所有算法不过是一个复杂的方程式,需要借助给定的数据将其最小化. 3. ...

  8. Scipy优化scipy.optimize.minimize

    如果喜欢请点赞,收藏,谢谢! 要解决一个优化问题 m i n i m i z e x [ 0 ] , x [ 1 ] \mathrm{minimize}_{x[0],x[1]} minimizex[0 ...

  9. 基于 scipy.optimize.minimize 方法对 MindQuantm 搭建的变参量子线路进行优化

    基于 scipy.optimize.minimize 方法对 MindQuantm 搭建的变参量子线路进行优化. 任务详情请参考 MindQuantum 官网 import numpy as np i ...

最新文章

  1. 在线qmc0转换mp3工具_如何将M4A格式的音频转换为MP3格式?只需一步搞定
  2. 开发日记-20190724 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 14
  3. 利用js对页面数据进行排序
  4. 线程间通信: Handler , Looper, MessageQueue, Message (完结)
  5. 先定个小目标, 使用C# 开发的千万级应用
  6. mac ssh客户端_Electerm for Mac(ssh客户端)
  7. JavaTPoint 移动开发教程【翻译完成】
  8. python多窗口传递信息,认识QT ----- 多窗口以及窗口之间的传值
  9. 【智能优化算法】基于基于遗传算法实现认知无线电优化求解附matlab代码
  10. 谷歌账号在谷歌浏览器无法登录,提示此浏览器或应用可能不安全的一种解决办法
  11. 基于java springboot android安卓商城购物平台源码(毕设)
  12. Linux丢包故障的解决与思路
  13. 高中数学学习方法的8个诀窍,高中生必看
  14. UltralSO 软碟通制作U盘启动盘(图解详细 完美避坑)
  15. 【BFS】营救铁达尼号(C++)
  16. java格式化时间间隔_用Java本地化格式化时间间隔
  17. 解决oracle异常ORA-01012: not logged on
  18. (ICML-2020)通过超球面的对齐和均匀性理解对比表示学习(一)
  19. LocalDate 年月日api
  20. Erlang JAM二三话

热门文章

  1. VS中发布并调试IIS程序(非附加进程!!!)
  2. Stanford_NLP_TOOLS:CRFClassifier
  3. 中国人工智能学会通讯——智能系统测评:挑战和机遇
  4. Android GUI之Window、WindowManager
  5. [数分提高]2014-2015-2第7教学周第1次课 (2015-04-14)
  6. ASP.NET MVC5使用AjaxHelp
  7. jQuery Unveil – 另一款非常轻量的延迟加载插件
  8. Google真相:决策贡献及其艰苦抉择
  9. 02-第二章 基本类型
  10. 飞鸽传书 扩散全身的