问题标签 [scipy-optimize]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用带有熊猫数据框参数的 scipy 进行优化
我正在尝试优化一个功能。但是这个函数需要一个 pandas 数据框作为参数。所以当我运行代码时,我得到了这个错误:
TypeError: 'DataFrame' 对象是可变的,因此它们不能被散列
我的评价函数:
价格是一个熊猫数据框。
我该如何优化呢?还有一个问题是我的优化函数也需要传入初始猜测数组。那么当我设置 args 参数时,我该如何解释呢?
optimization - SLSQP 优化不收敛到唯一的解决方案
我正在尝试简单的实验来学习 scipy 的 SLSQP 优化器。
我采用了以下功能:
这是雅可比的:
它的界限为:
一个简单的约束——x[0]+2*x[1]<=1:
现在我尝试初始猜测 x0=[.1,0.01]
当我运行它时,我得到的解决方案是:x[0]=1,x[1]=0 and obj=-1
但是当我以 x0=[0.001,0.01] 的初始猜测开始时,我得到的解决方案是:x[0]=0,x[1]=0.5 和 obj=0.25
为什么在后面的运行中没有给出最佳解决方案?它是如何工作的?
python - Python:python 中的约束优化 - 最快/有效的方式?
我在 python 中有一个简单的优化问题,我需要经常重新运行(超过 10,000 次)。
大多数计算可以使用 numpy 完成,并且 n 维数组非常有效,但是,当涉及到优化时,我迷失了方向,因为我必须切换到 scipy.optimize.minimize。
有没有一种方法可以立即运行优化?
目前我正在遍历每一行 - 请参见下面的代码:
有没有更优雅、更有效的方法而不是循环遍历?
PS:我曾尝试使用“Pool”,但这“只是”一半的时间 - 循环仍然存在同样的问题。
python - 方程组的否定给出不同的答案
我遇到了一些奇怪的事情,这可能只是一个愚蠢的错误,但我需要一些帮助来理解发生了什么。
考虑下面的第一组非线性方程和计算的解。
现在,将方程乘以负 1 并求解(注意:这应该是同一组方程,因为求解是求解形式为 f(x)=0 的方程)。
为什么解决方案也被否定了?
python - 具有正弦波纹的 n 阶多项式的曲线拟合
我正在对某个测量设备中的测量误差进行建模。这就是数据的样子:低频多项式上的高频正弦纹波。我的模型也应该捕捉到涟漪。
拟合误差的曲线应采用以下形式:error(x) = a0 + a1*x + a2*x^2 + ... an*x^n + Asin(x/lambda)。多项式的阶数 n 未知。我的计划是从 1-9 迭代 n 并选择具有最高F-value的那个。
我玩过,numpy.polyfit
到目前为止scipy.optimize.curve_fit
。numpy.polyfit
仅适用于多项式,因此虽然我可以生成“最佳拟合”多项式,但无法确定正弦项的参数 A 和 lambda。scipy.optimize.curve_fit
如果我已经知道 error(x) 的多项式部分的多项式的阶数,效果会很好。
有没有一种巧妙的方法可以同时使用numpy.polyfit
并scipy.optimize.curve_fit
完成这项工作?或者可能是另一个库函数?
这是我numpy.polyfit
用来选择最佳多项式的代码:
这是我如何使用的代码curve_fit
:
它被“硬编码”为二次函数,但我想选择“最佳”顺序,就像我在上面所做的那样np.polyfit
python - Scipy TypeError:在优化中使用 dogleg 时,只能将 size-1 数组转换为 Python 标量,为什么?
我正在使用 Scipy 工具中的方法dogleg
来optimize.minimize
求解我的非线性 2 方程系统。
为了使用这种方法,我定义了自己的粗麻布和雅可比函数。他们看起来像
运行代码表明
但是,我收到以下错误
存在
我在方法中找到的get_boundaries_intersections(self, z, d, trust_radius)
为什么我会收到此错误?我没有为 Jacobian 和 Hessian 函数设置正确的类型吗?根据文档,它们都应该是一个数组。
编辑:添加 myF
EDIT2:添加我的回溯
添加_trustregion
片段以显示与内import math
一起使用math.sqrt
get_boundaries_intersections()
python - pyspark UDF 中 scipy.optimize.curve_fit 的异常处理
我scipy.optimize.curve_fit
在 UDF 中有一个可能引发异常的调用。有没有办法处理来自 UDF 外部的异常?
我试图从 UDF 内部处理异常,但collect()
有时没有捕获到异常。
我试过:
我希望udf_curve_fitter
返回(-1, -1, -1)
,而不是我得到:
python - ValueError:使用 scipy.optimize curve_fit 设置具有序列的数组元素
我试图求解一个三次方程并适合我的实验数据集。但是我的代码中存在一些关于curve_fit
. 尽管功能f
和del_y
定义都完美(使用参数值检查),但curve_fit无法正常工作并向我显示错误:
ValueError:使用序列设置数组元素。
有人可以帮我解决这个问题吗?
optimization - 使用 scipy 优化求解具有逐元素约束的参数矩阵
我有一个相对简单的优化问题,但不是特别精通 scipy,无法弄清楚如何应用必要的约束。我的目标函数是最小化 10 元素向量y和x之间的绝对距离,其中x是 10x3 参数矩阵p的加权行和
我需要将以下约束添加到参数矩阵p:
- p的每个元素,但是 >=0 和 <=1
- p的每一列之和必须为 1
- p的每一行之和不得超过1
我试图根据其他 SO 问题来实施约束,尽管我承认我并不完全理解它,也不完全理解它产生的错误。
运行此代码后,我收到以下错误消息:
AxisError:轴 1 超出维度 1 数组的范围
任何帮助深表感谢。