问题标签 [pyminuit]

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 投票
5 回答
23628 浏览

python - Python曲线拟合库,允许我为参数分配界限

我希望能够执行拟合,允许我将任意曲线函数拟合到数据,并允许我设置参数的任意边界,例如我想要拟合函数:

并说:

  • a2在以下范围内:(-1, 1)
  • a3并且a5是积极的

有很好的scipy curve_fit 函数,但它不允许指定参数范围。还有一个很好的http://code.google.com/p/pyminuit/库可以进行通用最小化,它允许设置参数的界限,但在我的情况下它没有覆盖。

0 投票
1 回答
1301 浏览

python - 使用 iminuit 解决 n 维优化问题

我想用 iminuit 解决一个 n 维优化问题。

所以我的方法如下。我试图弄清楚如何扩展它:

到一个变量“x”,它是一个 numpy.array。

我想做这样的事情:

但在我的情况下,x 是我的未知数,它是一个数组。与许多优化/最小化问题一样,函数是 af=f(x1,...,xn),其中 n 可能很大。x1,...,xn 是问题的未知数。

(这些例子取自这里

类似的东西是实现“黑客”pyminuit2,如此处所述

0 投票
1 回答
2678 浏览

python - PyMinuit 与 IMinuit

我一直在寻找 Python 2.7 上的 miniuit 等价物,我发现了这两个变体:
PyMinuit
iMinuit

我的问题是:它们之间有什么区别?

两者都使用 Seal 1.7.9 Minuit 和一些 2D 高斯拟合测试,我都带来了相同的答案。那么,除了安装方法(iMinuit 更简单),我为什么要选择另一种呢?


谢谢你的帮助!xD

PS 我也尝试标记 iminuit 但我无法创建新标签... =/

0 投票
0 回答
812 浏览

python - 使用 pyminuit 将函数拟合到数据

我编写了一个 Python (2.7) 程序来评估一些科学数据。它的主要任务是将这些数据拟合到某个函数(1)。由于这是相当多的数据,因此程序使用多处理将作业(=“适合一组数据”)分配给多个核心。在第一次尝试中,我使用 scipy.optimize 中的 curve_fit 实现了拟合过程,效果很好。

到目前为止,一切都很好。然后我们看到数据更精确地由函数(1)的卷积和高斯分布来描述。这个想法是首先将数据拟合到函数 (1),得到猜测值,然后再次将数据拟合到卷积。由于数据非常嘈杂,并且我试图将其拟合到具有七个参数的卷积中,因此这次的结果相当糟糕。特别是高斯参数在某种程度上在物理上是不可能的。

所以我尝试在 PyMinuit 中实现拟合过程,因为它允许将参数限制在某些边界内(如正幅度)。由于我以前从未与 Minuit 合作过,并且我尝试从小处着手,因此我重写了拟合过程的第一(“简单”)部分。完成这项工作的代码片段如下所示(简化):

其中 efunc() 是函数 (1)。参数 d 是固定的,因为我目前不使用它。
PyMinuit 函数参考
最后,实际问题来了:运行脚本时,Minuit 几乎每次都打印

到具有不同 edm 值的标准输出。合身仍然可以正常工作,但打印会大大减慢程序的速度。我试图增加 fit.tol 但有很多数据集返回更高的 edm。然后我尝试使用这个实际有效的解决方案隐藏 fit.migrad() 的输出。现在发生了一些奇怪的事情:在程序中间的某个地方,所有内核上的进程同时失败。不是第一次适合,而是在我的整个数据集的中间。我唯一改变的是

我知道这是一个很长的介绍,但我认为当您了解整个框架时它会帮助您更多。如果有人对如何解决这个问题有任何想法,我将不胜感激。


:函数(1)定义为

0 投票
1 回答
209 浏览

python - "print_level =-1" 不会删除所有消息

我在 python 中使用 iminuit 成功地完成了一个函数,但即使使用“print_level =-1”或“print_level =0”,我也无法摆脱该消息。

这是我使用的极简代码:

它返回:

我只是希望它安静,因为我适合包含约 170.000 组数据的循环。

谢谢

0 投票
0 回答
33 浏览

python - 使用多处理将特殊对象附加到来自不同进程的相同列表

我正在尝试使用 python 多处理并行化任务,但结果是当我需要将对象附加到列表时(具体来说是来自 iminuit 库的一个 minuit 对象),它会给出错误“......无法转换为 Python酸洗对象”。我在这里展示了一个通常可以工作但不适用于这些对象的代码。

阅读多处理的文档我没有找到正确的方法。提前致谢。

pd:在非并行的情况下,很容易制作一个列表并附加这些对象,所以我不明白为什么通常你可以附加它但它在这里不起作用。