【问题标题】:How to fit a curve to this data using scipy curve_fit如何使用 scipy curve_fit 将曲线拟合到此数据
【发布时间】:2020-06-12 23:11:32
【问题描述】:

我希望有人能帮我解决我在为这些数据拟合曲线时出错的地方。我正在使用link 中的方法,因此具有以下代码:

def sigmoid(x, L, x0, k, b):
    y = L / (1 + np.exp(-k*(x-x0)))+b
    return y

p0 = [max(y1), np.median(x2), 1, min(y1)]

popt, pcov = curve_fit(sigmoid, xdata=x2, ydata=y1, p0=p0, method='dogbox')

predictions = sigmoid(x2, *popt)

我绘制的“曲线”看起来像这样:

但我期待更多的 s 形曲线。我尝试了不同的 p0 值,但没有得到所需的输出(老实说,我不确定应该如何找到理想的起始参数)。

使用p0 = [max(y1), np.median(x2), 0.4, 1]method='trf 我确实得到了以下结果,它更接近但仍然缺少中间的曲线?

非常感谢任何帮助!

【问题讨论】:

  • 那是因为您的 y 轴是对数刻度。如果将 y 轴更改为线性轴,您会发现拟合实际上非常好。
  • 太棒了 - 谢谢。已将 y 轴更改为线性并将我的 y 值转换为 log(y),现在就可以了!

标签: python-3.x scipy curve-fitting sigmoid


【解决方案1】:

那是因为您的 y 轴是对数刻度。如果您将 y 轴更改为线性轴,您会发现拟合实际上非常好。

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 2016-11-29
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2021-09-25
    • 1970-01-01
    • 2020-05-18
    相关资源
    最近更新 更多