python多变量拟合,带有多个自变量的Python curve_fit

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, to fit for a function with multiple independent variables? For example:

def func(x, y, a, b, c):

return log(a) + b*log(x) + c*log(y)

where x and y are the independent variable and we would like to fit for a, b, and c.

解决方案

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]]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值