【发布时间】:2021-12-12 07:01:58
【问题描述】:
我尝试使用 Numpy、Scipy 和 Scikitlearn,但在其中任何一个中都找不到我需要的东西,基本上我需要将曲线拟合到数据集,但是将一些系数限制为已知值,我找到了如何在 MATLAB 中使用 fittype 执行此操作,但在 python 中无法执行。
在我的情况下,我有一个 X 和 Y 的数据集,我需要找到最佳拟合曲线,我知道它是二次多项式 (ax^2 + bx + c),我知道它是 b 和 c 的值,所以我只需要它来找到 a 的值。
我在 MATLAB 中找到的解决方案是 https://www.mathworks.com/matlabcentral/answers/216688-constraining-polyfit-with-known-coefficients,这与我的问题相同,但不同之处在于它们的多项式是 5 次,我如何在 python 中做类似的事情?
添加一些信息:我需要将曲线拟合到数据集,因此需要函数的 scipy.optimize.curve_fit 之类的东西不起作用(至少在我尝试过的情况下)。
【问题讨论】:
-
你绝对应该看看this SO post
-
我认为他们的问题有点不同,因为他们只知道截距系数,而我的适合“几乎所有已知的函数”,即使我认为这不是同一个问题我'一定要检查一下才能确定
-
好吧,如果你想适应
a * x**2 + b * x + c,但b和c是已知的,你只需减去你的y-valuesys = y - b * x - c的信息并适应a * x**2到那个数据,例如通过 `Polinomial.fit( ..., deg=[2] ) -
注意,此时
curve_fit可以正常工作。然而,这是一个线性拟合,而 `curve_fit,从技术上讲,是用于非线性拟合的,所以它在某种程度上不是适合这项工作的工具。但这更像是一个纯粹主义者而不是实际的观点 -
@mikuszefski 问题是我的 b 值为 0,所以 sub 不会产生影响,Poly fit 会尝试猜测它。
标签: python-3.x numpy scikit-learn data-science curve-fitting