【问题标题】:Why am i getting a straight line for exponential decay curve best-fit为什么我得到一条最适合指数衰减曲线的直线
【发布时间】:2021-07-31 22:19:12
【问题描述】:

大家好, 我试图在 Python 中拟合双指数衰减函数的曲线。我使用的代码如下。我不知道为什么我会得到一条直线。欢迎对我的代码提供任何帮助和建议,这会很有帮助。

xData = np.array(xData) 
yData = np.array(yData)
def double_exp(x, a1, t1, a2, t2):
    return a1*np.exp(-x/t1) + a2*np.exp(-(x-0.1) / t2)
mod=Model(double_exp)

result=mod.fit(yData,x=xData,a1=0.7,t1=0.5,a2=0.3,t2=10)
result.plot()
plt.grid()
plt.xlabel('Time')
plt.ylabel('Fluoresence Lifetime')

我的 xData 和 yData 列表的示例数据值是

[![xData is \[2.50783699e-09 5.01567398e-09 7.52351097e-09 1.00313480e-08
 1.25391849e-08 1.50470219e-08 1.75548589e-08 2.00626959e-08
 2.25705329e-08... etc\]
yData is \[ 1025.  1032.  1101.  1138.  1205.  1086.  1692. 13515. 59434. 82067.64293. 52266. 43993. 35335. 30066. 29989. 33773. 30521. 26468. 26338.27233. 26276. 24109....etc\]][1]][1]

【问题讨论】:

  • 无法重现您所做的事情,因为与问题相关的数据不一致且不完整。因此,人们无法寻找麻烦的原因。
  • 您能解释一下吗?我无法关注@JJacquelin
  • 它们是您的 xData 中的 9 个数字。它们是 yData 中的 23 个数字。所以不一致。它们在图表上的点比在数据中的点多得多。如果没有您的全部数据,您将无法准确地重现您的微积分。人们无法观察你得到的直线。所以找不到问题的原因。
  • @JJacquelin 不,实际上它们的大小相同。我只是想展示一个示例,说明我的列表数据是什么样的
  • 你能理解显示一个图表和一个部分数据是不够的。如果您不提供完整的数字示例,我将不会回答这个问题。

标签: python curve-fitting exponential lmfit


【解决方案1】:

我向所有阅读本文的人道歉,因为这里的回答有点超出了 StackOverflow 的规范。这更像是一个长评论而不是一个答案,这与发布者在过去几个月中就使用 lmfit 库提出了许多类似的问题有关。

@Angela Mary 你可能得到一条直线,因为你的初始值不够接近,无法细化。

使用 lmfit 时,您绝对必须为所有要优化的参数提供真实的初始值。在任何情况下都不能忽视这一点。如果您不确定您的初始值是否合理,请在尝试拟合之前用初始参数值绘制数据和模型。进行拟合时,您是在断言您知道初始值是近似数据的合理值。

推论:当你给它不合理的初始值时,它无法找到一个好的解决方案并不是算法或库的错误。这应该是意料之中的。

试穿后,请务必打印并阅读试穿报告。这包含主要结果。结果拟合图可能很有用——正如他们所说,一张图片值一千字。但是拟合结果包含拟合结果的表格,一张数字的表格值一千张图片。让我重复一遍:总是打印出来并实际阅读 FIT 报告。请勿在未包含此报告的情况下发布有关 lmfit 结果的问题。

StackOverflow 的重点在于编码。问题应该强调如何使用库,而不是它给出的结果。这意味着您不太可能获得关于为什么模型与特定数据不匹配的非常有意义的答案。就如何做事提出问题。

由于论坛是关于编码的,所以总是包含一个最小的、完整的示例来说明问题。如果短语“最小的、完整的例子”对你来说是陌生的,考虑一下你的第一个家庭作业。此处发布的代码需要完整且可由其他人运行。需要包括输出报告。如果您收到异常运行代码,请发布完整的回溯。不要编辑结果:逐字发布。这些不是建议或“如果您认为合适”。这些是要求。

如果您正在拟合数据(或使用数据进行任何其他计算),则将该数据包含在代码本身中或作为现成的数据文件。由于您的示例已经制作成最小的完整示例,因此数据不需要很大。

【讨论】:

    猜你喜欢
    • 2012-12-30
    • 2016-10-09
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多