问题标签 [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.

0 投票
0 回答
113 浏览

python - 使用带有熊猫数据框参数的 scipy 进行优化

我正在尝试优化一个功能。但是这个函数需要一个 pandas 数据框作为参数。所以当我运行代码时,我得到了这个错误:

TypeError: 'DataFrame' 对象是可变的,因此它们不能被散列

我的评价函数:

价格是一个熊猫数据框。

我该如何优化呢?还有一个问题是我的优化函数也需要传入初始猜测数组。那么当我设置 args 参数时,我该如何解释呢?

0 投票
1 回答
390 浏览

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

为什么在后面的运行中没有给出最佳解决方案?它是如何工作的?

0 投票
0 回答
157 浏览

python - Python:python 中的约束优化 - 最快/有效的方式?

我在 python 中有一个简单的优化问题,我需要经常重新运行(超过 10,000 次)。

大多数计算可以使用 numpy 完成,并且 n 维数组非常有效,但是,当涉及到优化时,我迷失了方向,因为我必须切换到 scipy.optimize.minimize。

有没有一种方法可以立即运行优化?

目前我正在遍历每一行 - 请参见下面的代码:

有没有更优雅、更有效的方法而不是循环遍历?

PS:我曾尝试使用“Pool”,但这“只是”一半的时间 - 循环仍然存在同样的问题。

0 投票
0 回答
102 浏览

python - 将余弦函数拟合到另一个

作为 A 和 B 两个余弦数据系列(相同的 X 值,不同的 Y 值),我想确定第三个余弦函数(及其参数),以便: A(x) = B(x) + C(x) [A 是蓝色曲线,B是下面的红色曲线]

我只想发现我必须将哪个余弦函数(或 N 个余弦函数)添加到 B(x) 以产生 A(x)(或尽可能接近)。

插入图像描述

到目前为止,我已经设法读取了 A(x) 和 B(x) 的数据点,并用于scipy.optimize.curve_fit()恢复每个系列的余弦函数参数。

获得的余弦参数似乎没问题,并且在我期望的误差范围内。

从那里,有没有人知道如何找到第三个余弦函数,以便 A(x) = B(x) + C(x)?

0 投票
0 回答
39 浏览

python - 方程组的否定给出不同的答案

我遇到了一些奇怪的事情,这可能只是一个愚蠢的错误,但我需要一些帮助来理解发生了什么。

考虑下面的第一组非线性方程和计算的解。

现在,将方程乘以负 1 并求解(注意:这应该是同一组方程,因为求解是求解形式为 f(x)=0 的方程)。

为什么解决方案也被否定了?

0 投票
3 回答
1678 浏览

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_fitnumpy.polyfit仅适用于多项式,因此虽然我可以生成“最佳拟合”多项式,但无法确定正弦项的参数 A 和 lambda。scipy.optimize.curve_fit如果我已经知道 error(x) 的多项式部分的多项式的阶数,效果会很好。

有没有一种巧妙的方法可以同时使用numpy.polyfitscipy.optimize.curve_fit完成这项工作?或者可能是另一个库函数?

这是我numpy.polyfit用来选择最佳多项式的代码:

这是我如何使用的代码curve_fit

它被“硬编码”为二次函数,但我想选择“最佳”顺序,就像我在上面所做的那样np.polyfit

0 投票
0 回答
144 浏览

python - Scipy TypeError:在优化中使用 dogleg 时,只能将 size-1 数组转换为 Python 标量,为什么?

我正在使用 Scipy 工具中的方法doglegoptimize.minimize求解我的非线性 2 方程系统。

为了使用这种方法,我定义了自己的粗麻布和雅可比函数。他们看起来像

运行代码表明

但是,我收到以下错误

存在

我在方法中找到的get_boundaries_intersections(self, z, d, trust_radius)

为什么我会收到此错误?我没有为 Jacobian 和 Hessian 函数设置正确的类型吗?根据文档,它们都应该是一个数组。

编辑:添加 myF

EDIT2:添加我的回溯

添加_trustregion片段以显示与内import math一起使用math.sqrtget_boundaries_intersections()

0 投票
1 回答
507 浏览

python - pyspark UDF 中 scipy.optimize.curve_fit 的异常处理

scipy.optimize.curve_fit在 UDF 中有一个可能引发异常的调用。有没有办法处理来自 UDF 外部的异常?

我试图从 UDF 内部处理异常,但collect()有时没有捕获到异常。

我试过:

我希望udf_curve_fitter返回(-1, -1, -1),而不是我得到:

0 投票
0 回答
66 浏览

python - ValueError:使用 scipy.optimize curve_fit 设置具有序列的数组元素

我试图求解一个三次方程并适合我的实验数据集。但是我的代码中存在一些关于curve_fit. 尽管功能fdel_y定义都完美(使用参数值检查),但curve_fit无法正常工作并向我显示错误:

ValueError:使用序列设置数组元素。

有人可以帮我解决这个问题吗?

0 投票
2 回答
542 浏览

optimization - 使用 scipy 优化求解具有逐元素约束的参数矩阵

我有一个相对简单的优化问题,但不是特别精通 scipy,无法弄清楚如何应用必要的约束。我的目标函数是最小化 10 元素向量yx之间的绝对距离,其中x是 10x3 参数矩阵p的加权行和

我需要将以下约束添加到参数矩阵p

  1. p的每个元素,但是 >=0 和 <=1
  2. p的每一列之和必须为 1
  3. p的每一行之和不得超过1

我试图根据其他 SO 问题来实施约束,尽管我承认我并不完全理解它,也不完全理解它产生的错误。

运行此代码后,我收到以下错误消息:

AxisError:轴 1 超出维度 1 数组的范围

任何帮助深表感谢。