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

这篇具有很好参考价值的文章主要介绍了python scipy.optimize.minimize多变量多参数优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


自己在用python求解多变量带多超参数输入的最小化问题时,遇到一些问题,在网上找了一下发现也没有特别详细的教程,自己试错之后整理了下minimize的使用说明。话不多说,直接上代码。

x是一维变量,无超参数

y为优化目标函数,x为待优化的变量。优化前给定x的初始值x_ini,因为现在只有一个待优化的变量,所以先不说明待优化变量的初值给定时必须为什么类型。

from scipy.optimize import minimize
import numpy as np

def y(x):
    y=np.sin(x)+np.cos(x)+0.5
    return y
    
x_ini=1.0

res=minimize(y,x0)

print("x",res.x)
print("fun",res.fun)

优化后得到result,“.x”索引出优化后的变量值,“.fun”索引出优化后的函数最小值,也就是优化结果。

x是二维变量,无超参数,带bounds

现在有多个待优化的变量,以二维为例,为方便展示优化效果,以y=3x1-5x2+1为优化目标。

在有多个待优化的变量时,变量初始值必须以一维数组的形式给定。

在调用minimize函数时,括号里第一位放的是待优化的目标函数y,第二位放的是变量初始值。

这里还额外放了变量的优化范围,如果想指定优化方法的话也可以依次在括号里加进去,这里因为优化问题比较简单就不指定优化算法了。

def y(x_set):
    x1,x2=x_set
    y=3*x1-5*x2+1.0
    return y
x_ini=np.array([1.0,1.0])#x初始值的类型为数组类型
res=minimize(y,x_ini,bounds=((-10,10),(-10,10)))
print(res.x)

x是二维变量,有一个超参数,带bounds

在有超参数的存在时,在定义优化目标函数y时就要给定,而且必须为:

y(待优化参数集合,超参数)

这种形式。

这里args是以(1)的形式给出的,后面会说明原因。

def y(x_set,args):
#定义待优化的函数时,必须先放待优化的参数的集合,再放超参数。
#而且在有多维x时,必须是numpy一维数组类型,不能放成高维数组。
    x1,x2=x_set
    b=args
    y=3*x1-5*x2+b
    return y
x_ini=np.array([1.0,1.0])
args=(1)
res=minimize(y,x_ini,args,bounds=((-10,10),(-10,10)))
print(res.x)

x是二维变量,有多个超参数,带bounds

在自定义的函数y中,传入的x_set为一维数组类型,args为元组类型。

在给定超参数初始值时,x必须为一维数组,超参数为元组类型,这就是为什么上一段函数中需要加"()"的原因。

在传递超参数的值时,必须是args=(paras,)这种形式。文章来源地址https://www.toymoban.com/news/detail-652054.html

#定义待优化的函数时,必须先放待优化的参数的集合,再放超参数。
#而且在有多维x时,必须是numpy一维数组类型,不能放成高维数组。
#而且在有多维超参数时,必须是元组形式,调用时必须args=(paras,),paras为元组形式。
def y(x_set,args):
    x1,x2=x_set
    a,b=args
    y=3*x1-5*x2+a*b
    return y
x_ini=np.array([1.0,1.0])
paras=(1,2)
res=minimize(y,x_ini,args=(paras,),bounds=((-10,10),(-10,10)))
print(res.x)
print(res.fun)

到了这里,关于python scipy.optimize.minimize多变量多参数优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 掌握Python的X篇_33_MATLAB的替代组合NumPy+SciPy+Matplotlib

    numPy 通常与 SciPy( Scientific Python ) 和 Matplotlib (绘图库) 一起使用,这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。 numpy /nampai/ 数值计算库,简单而言,可以被当做向量,线性代数计算。 官方推荐导入方式: 以 n

    2024年02月13日
    浏览(33)
  • CST 优化器设置 Optimizer-Settings 使用cst自动优化参数

    优化器位于simulation选项中的optimizer按钮,点击即可进入优化器设置。 进入优化器后会看到如图所示的选项卡 在Simulation type中可以选择在求解器求解时就进行优化或者利用后处理数据进行优化 在对话框中一共有三个属性页(settings goals info)用于优化设置,先来看setting。 2.

    2024年02月01日
    浏览(24)
  • 【深度学习PyTorch入门】6.Optimizing Model Parameters 优化模型参数

    现在我们有了模型和数据,是时候通过优化数据上的参数来训练、验证和测试我们的模型了。训练模型是一个迭代过程;在每次迭代中,模型都会对输出进行猜测,计算其猜测中的误差( 损失 ),收集相对于其参数的导数的误差(如我们在上一节中看到的),并使用梯度下

    2024年01月24日
    浏览(50)
  • optuna,一个好用的Python机器学习自动化超参数优化库

    🏷️ 个人主页 :鼠鼠我捏,要死了捏的主页  🏷️ 付费专栏 :Python专栏 🏷️ 个人学习笔记,若有缺误,欢迎评论区指正   超参数优化是机器学习中的重要问题,它涉及在训练模型时选择最优的超参数组合,以提高模型的性能和泛化能力。Optuna是一个用于自动化超参数优

    2024年02月20日
    浏览(38)
  • 【机器学习】P17 梯度下降 与 梯度下降优化算法(BGD 等 与 Adam Optimizer、AdaGrad、RMSProp)

    梯度下降(Gradient Descent)是一种常用的优化算法,用于求解目标函数的最小值。(在机器学习应用梯度下降中,主要目标是为了最小化损失函数); 其基本思想是通过不断迭代调整参数,使得目标函数的值不断逼近最小值。(机器学习中是为了最小化损失函数,即使得预测

    2023年04月16日
    浏览(35)
  • 【python】Bayesian Optimization(贝叶斯优化)优化svm回归问题

    贝叶斯优化(Bayesian Optimization)是一种用于黑盒函数优化的序列模型优化方法。它在较少的函数评估次数下,尝试寻找全局最优解。 贝叶斯优化使用高斯过程(Gaussian Process)作为先验模型来建模未知的目标函数。通过对目标函数进行一系列评估和建模迭代,贝叶斯优化能够

    2024年02月12日
    浏览(30)
  • 对于numpy.linalg和scipy.linalg(待完善)

    这俩部分都是用于线性代数的计算,但是存在一些差别,下面是使用中出现的问题: 首先说明的是计算矩阵的伪逆的时候:np.linalg.pinv和scipy.linalg.pinv都是用于计算矩阵伪逆的,二者得到结果并不一致,只能说是差不多。但是代码中用scipy的线性代数模块求了; 如何一个矩阵

    2024年02月07日
    浏览(31)
  • 机器学习(六):回归分析——鸢尾花多变量回归、逻辑回归三分类只用numpy,sigmoid、实现RANSAC 线性拟合

    [ 实验1 回归分析] 一、 预备知识 使用梯度下降法求解多变量回归问题 数据集 Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、

    2023年04月13日
    浏览(73)
  • numpy 邻接矩阵转稀疏矩阵 array to scipy csr_matrix

    也就是说,一个dense的numpy矩阵,如何转换成scipy包里面的sparse的csr矩阵看代码: 输出: print(csr_a.toarray()) print(csr_a.tocoo())

    2024年02月12日
    浏览(39)
  • Windows系统配置Anaconda虚拟环境,并安装Numpy、Scipy和Matplotlib等模块方法

    有些项目不是必须在Ubuntu系统下进行的,对大部分人来说更熟悉Window系统,且查阅电脑中相关文件和使用微信更方便,因此记录一下Windows系统配置Anaconda虚拟环境步骤和安装Numpy、Scipy及Matplotlib等模块方法。 一、Anaconda安装 Anaconda可以管理不同的python版本,因为有些项目需要

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包