Powerfit to python中的数据点

问题描述 投票:0回答:1

对于某些数据处理,我想对以下数据集应用幂拟合:

x = [6.7147986, 7.90308827, 10.07001871, 13.56874563, 21.53540322, 31.01723227]
y = [0.02, 0.23, 0.39, 0.49, 0.55,0.59]
std = [0.32150353, 0.518832, 0.98327774, 1.45607963, 1.69612867, 1.96927535]

我尝试从xdata减去6.7417986,使其从零开始并使用:

from scipy.optimize import curve_fit
def powerlaw(x,a,b,c,c0):
    return c0+a*x**b*c

popt,cov = curve_fit(powerlaw, xdata-6.714, ydata, p0 = [0.5,0.5,0.99,0], maxfev = 2000)

但是,我变得非常不适应。有什么建议如何改进?它必须是幂拟合,而不是指数拟合或任何其他类型。我还尝试将其转换为对数以适合一条直线,但是在此配置中数据不允许这样做。在y = 0时,曲线应等于x [0]。

python curve-fitting
1个回答
0
投票
    return c0+a*x**b*c

您的参数ac完全退化。在这种情况下很难适应。

您从c0 = 0开始。如果您希望将其固定为该值,那么使用对数时拟合会更容易。

© www.soinside.com 2019 - 2024. All rights reserved.