scipy.optimize.curve_fit TypeError

时间:2017-01-12 11:37:01

标签: python scipy

在尝试使指数适合数据时,scipy.optimize.curve_fit会返回TypeError

x = np.array([0.,1200.02220551,3600.06661654,6000.11102756,8400.15543858,10800.19984961])
y = np.array([0.51057636,0.63187347,0.72030091,0.75168574,0.79036657,0.81551974])

def f(x,p1,p2):                                                                  
    p1*np.exp(x*p2)

popt, pcov = curve_fit(f, x, y)

不幸的是,这会返回以下错误:

TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

对此出现问题的任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

f需要返回其结果。

def f(x,p1,p2):                                                                  
    return p1*np.exp(x*p2)

注意:如果您收到不同的错误(未找到最佳参数),请不要感到惊讶。数据看起来是对数而不是指数。切换x和y(curve_fit(f, y, x))可能与指数函数一起使用。