我尝试使用SciPy的平滑单变量样条
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<托尔。 warnings.warn(消息)
如何重新定义maxit参数?我没有在SciPy手册中找到任何内容,只是它是类scipy.odr.ODR中的关键字。我虽然没有太多运气。
答案 0 :(得分:1)
你不能改变这个参数,它在FITPACK代码的深层固定:
https://github.com/scipy/scipy/blob/master/scipy/interpolate/fitpack/curfit.f#L220
原则上,您可以修改Fortran源并重新编译scipy,但这几乎肯定不是您想要做的。相反,您可以使用UnivariateSpline的s
参数(或者就此而言是splrep)来查看您是否根据数据x
和y
获得了有用的内容。
顺便说一下,ODR与此毫无关系。