首页 > 解决方案 > Scipy 拟合曲线的点

问题描述

我正在尝试拟合曲线scipy.optimize.curve_fit

我的数据:

x = [3,4,5,6,8,10,12]
y = [30,25,23,22,21,18,14]

像这样的功能

def func(x, b, c, d, a):
        return b * (x+a)**c + d

曲线拟合参数

bounds=[-50,50],  p0 = [50,-1,10,1],  maxfev = 50000)

链接到曲线

但正如你所见,曲线不是很准确。我假设我需要使用另一种类型的功能。或者也许还有其他工具可以完成这项任务?我只需要得到公式 y = F(x) 并预测 y 值,不仅在 [3,12] 上,也低于 3 和高于 12。

ps 我有几个这样的 xy 列表,可能在不同的数据中有不同的函数类型

标签: pythonmathscipycurve-fitting

解决方案


您写道“曲线不是很准确”。你是什​​么意思 ?准确与接近的标准是什么?准确的关于什么模型(明确指定或仍有待选择)?

在您选择 y(x)= b*(x+a)^c +d 的函数中,它们是 4 个可调参数。使用相同数量的参数,请参见以下函数 y(x)= a + b * x + c * x^2 +d * x^3 的线性最小二乘拟合:

在此处输入图像描述


推荐阅读