2016-11-02 2 views
1

Я пытался использовать сглаживание одномерного сплайна SciPy вPython: Пересмотрите MAXIT в UnivariateSpline

from scipy.interpolate import UnivariateSpline 
spl = UnivariateSpline(x, y) 

И я получаю сообщение об ошибке.

/usr/lib/python3.5/site-packages/scipy/interpolate/fitpack2.py:222: UserWarning: Максимальное число итераций Maxit (устанавливается равным 20 по программе) позволило найти был достигнут сглаживающий сплайн с fp = s: s слишком мал. Возвращается аппроксимация, но соответствующая взвешенная сумма квадратов остатков не удовлетворяет условию abs (fp-s)/s < tol. warnings.warn (сообщение)

Как я могу переопределить параметр maxit? Я не смог найти что-либо в руководстве SciPy, за исключением того, что это ключевое слово в классе scipy.odr.ODR. Хотя мне не повезло.

ответ

1

Вы не можете изменить этот параметр, он фиксируется глубоко в коде FITPACK:

https://github.com/scipy/scipy/blob/master/scipy/interpolate/fitpack/curfit.f#L220

В принципе, вы можете модифицировать Fortran источников и перекомпиляции SciPy, но это почти наверняка не то, что вы хотите делать. Вместо этого вы можете использовать параметр s UnivariateSpline (или splrep, если на то пошло), чтобы узнать, получаете ли вы что-то полезное, учитывая ваши данные x и y.

И, кстати, ODR не имеет к этому никакого отношения.

Смежные вопросы