Python curve_fit with multiple independent variables

后端 未结 6 607
广开言路
广开言路 2020-11-30 00:27

Python\'s curve_fit calculates the best-fit parameters for a function with a single independent variable, but is there a way, using curve_fit or something else,

6条回答
  •  生来不讨喜
    2020-11-30 01:13

    You can pass curve_fit a multi-dimensional array for the independent variables, but then your func must accept the same thing. For example, calling this array X and unpacking it to x, y for clarity:

    import numpy as np
    from scipy.optimize import curve_fit
    
    def func(X, a, b, c):
        x,y = X
        return np.log(a) + b*np.log(x) + c*np.log(y)
    
    # some artificially noisy data to fit
    x = np.linspace(0.1,1.1,101)
    y = np.linspace(1.,2., 101)
    a, b, c = 10., 4., 6.
    z = func((x,y), a, b, c) * 1 + np.random.random(101) / 100
    
    # initial guesses for a,b,c:
    p0 = 8., 2., 7.
    print curve_fit(func, (x,y), z, p0)
    

    Gives the fit:

    (array([ 9.99933937,  3.99710083,  6.00875164]), array([[  1.75295644e-03,   9.34724308e-05,  -2.90150983e-04],
       [  9.34724308e-05,   5.09079478e-06,  -1.53939905e-05],
       [ -2.90150983e-04,  -1.53939905e-05,   4.84935731e-05]]))
    

提交回复
热议问题