2011-07-28 10 views
2

지금 당장 커다란 데이터 세트에 커브를 맞추려고합니다. x와 y의 두 배열이 있고, 각각 352 개의 요소가 있습니다. 나는 잘 작동 데이터에 다항식에 맞게했습니다 :커다란 데이터 세트 피팅

import numpy as np 
import matplotlib.pyplot as plt 
coeff=np.polyfit(x, y, 20) 
coeff=np.polyfit(x, y, 20) 
poly=np.poly1d(coeff) 

을하지만 더 정확하게 최적화 된 곡선이 필요합니다, 그래서 scipy와 곡선에 맞게 노력했습니다. 여기에 지금까지 가지고있는 코드입니다 :

import numpy as np 
import scipy 
from scipy import scipy.optimize as sp 
coeff=np.polyfit(x, y, 20) 
coeff=np.polyfit(x, y, 20) 
poly=np.poly1d(coeff) 
poly_y=poly(x) 
def poly_func(x): return poly(x) 
param=sp.curve_fit(poly_func, x, y) 

는 그러나 반환 모든이있다 :

ValueError: Unable to determine number of fit parameters. 

가 어떻게이 작업을 얻을 수 있나요? (또는이 데이터에 곡선을 맞추려면 어떻게해야합니까?)

+1

_non-linear_ least squares method _polynomial 모델 _에 더 정확한 결과를 줄 것입니다 (선형입니까?). 선형 결과는 최소 자승 감각으로 가장 적합합니다. 비선형 방법을 사용하여 선형 모델에 대한 최소 제곱 피트를 얻는 것은 시간이 오래 걸리고 좋은 적합도를 반환하지 않을 것입니다 ... 그 외에 왜 20 차 다항식에 적합합니까? 해당 모델이 귀하의 데이터에 적합한가? (만약 그렇다면, 모호한 curosity에서 당신의 데이터는 무엇입니까?) –

+0

다항식 모델을 데이터에 맞추기보다는 스플라인 보간을 원하십니까? (즉, 각 포인트를 정확히 통과하지만 단일 수학 모델에 맞지 않거나 데이터를 가장 잘 재현 할 수있는 특정 수학 모델의 매개 변수를 찾고 싶습니까? –

+0

numpy.polyfit '두 번 달성하기로 했어? – talonmies

답변

3

적합 기능이 적합하지 않으므로 적합하지 않습니다.

곡선 맞춤은 피팅 매개 변수의 초기 추측을 필요로하는 비선형 최적화 도구를 사용합니다. 추측이 주어지지 않으면, 당신의 함수에서 실패한 내성을 통해 매개 변수의 수를 결정하려고 시도하고, 그것들을 1로 설정합니다. (거의 원하지 않는 것)