2015-02-06 4 views
27

파이썬의 curve_fit은 하나의 독립 변수로 함수에 가장 적합한 매개 변수를 계산하지만, curve_fit 또는 다른 것을 사용하여 여러 개의 독립 변수가있는 함수에 적합합니까? 예 :여러 개의 독립 변수가있는 Python curve_fit

def func(x, y, a, b, c): 
    return log(a) + b*log(x) + c*log(y) 

여기서 x와 y는 독립 변수이며 a, b 및 c에 적합합니다.

답변

27

독립 변수에 curve_fit 다차원 배열을 전달할 수 있지만 func은 동일한 것을 허용해야합니다. 예를 들어,이 배열 X를 호출하고 명확성을 위해 x, y에 개봉 :

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) 

가 적합 제공합니다 :

(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]])) 
+0

x와 y의 크기가 같지 않으면 커브 피트를 사용하도록 솔루션을 수정하는 방법. 예를 들어, x = linspace (0.1,1.1,101) 및 y = np.array ([1.0,2.0])? –

+0

'func'은 2 개의 독립 변수를 취하는 2 변량 함수를 나타냅니다. 그래서 적합을 위해 제공된 입력 값 x_i와 y_i에 대해 결과 f (x_i, y_i)를주는 것으로 정의해야합니다 . 'x'와'y'가 같은 크기가 아니라면 그것을 평가하려고합니다. 어떤'x'에서는'y'가 정의되지 않았으므로 확실하게 할 수 없습니다. – xnx

0

예, 있습니다 : xData에 대해 curve_fit에 다차원 배열을 지정하면됩니다.

+0

내가 하나의 배열로 덩어리 x와 y에 노력했습니다를'Z = [x, y]이므로'x = z [0]과'y = z [1]'이다. 그러나'curve_fit'는 그걸 좋아하지 않고 오류를 낳습니다 :'TypeError :/: 'list'와 'float'에 대해 지원되지 않는 피연산자 유형 – mcglashan

관련 문제