Кривая соответствует большому набору данных - PullRequest
2 голосов
/ 28 июля 2011

Сейчас я пытаюсь подогнать кривую к большому набору данных;Есть два массива, 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 Ответ

3 голосов
/ 28 июля 2011

Ваша функция подгонки не имеет смысла, для подгонки не требуется никаких параметров.

Для подбора кривой используется нелинейный оптимизатор, которому требуется первоначальное предположение о параметрах подбора. Если нет никаких предположений, он пытается определить количество параметров с помощью самоанализа, который не подходит для вашей функции, и установить для них один (что вам почти никогда не нужно).

...