繁体   English   中英

Python scipy curve_fit 指数方程未按预期拟合

[英]Python scipy curve_fit Exponential equation not fitting as expected

我有数据我试图拟合指数,但这个数据并不理想,但是当使用 JMP 的内置曲线拟合函数时,它按预期工作,并且我得到了我的数据的一个很好的近似值(请参见下图,JMP 拟合曲线指数3P)。

JMP 拟合曲线指数 3P

我知道尝试这种使用具有curve_fit功能Python库scipy.optimize所描述的复制在这里 然而,这会产生非常不同的曲线,请参见下文。

import pandas as pd
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np

df = pd.read_csv('test.csv', sep = ',' ,index_col = None, engine='python')

def exponential_3p(x, a, b, c):
    return a + b * np.exp(c * x) 

popt, pcov = curve_fit(exponential_3p,df.x,df.y)

a = popt[0] 
b = popt[1]
c = popt[2]

plt.plot(df.x,df.y)
plt.plot(df.x,exponential_3p(df.x, a, b, c))

scipy optimize.curve_fit 指数

您是scipy.optimize.curve_fit难以理解的愚蠢行为的又一个受害者。

曲线拟合和局部优化问题需要所有可变参数的初始值。 它们不是可选的。 没有有意义的“默认值”。 scipy.optimize.curve_fit在这方面向您撒谎,并允许您不提供初始值并默默地(甚至没有警告!)假设您的意思是所有初始值都是 1。这是错误的,错误的,错误的。

您必须给出合理的起始值或拟合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM