Python最小二乘自然样条

时间:2010-03-14 03:09:59

标签: python scipy spline

我试图找到一个适合自然样条的数值包,它可以最小化加权最小二乘法。

scipy中有一个包可以完成我想要的非自然样条曲线。

import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate, randn

x = np.arange(0,5,1.0/6)
xs = np.arange(0,5,1.0/500)

y = np.sin(x+1) + .2*np.random.rand(len(x)) -.1

knots = np.array([1,2,3,4])
tck = interpolate.splrep(x,y,s=0,k=3,t=knots,task=-1)
ys = interpolate.splev(xs,tck,der=0)

plt.figure()
plt.plot(xs,ys,x,y,'x')

1 个答案:

答案 0 :(得分:6)

默认情况下,来自tar file的此this page内的spline.py文件会自然拟合。 this page上还有一些代码主要声称您想要的代码。 pyD3D packagenatural spline function模块中也有一个pyDataUtils。最后一个看起来对我最有希望。但是,似乎没有选择设置自己的结。也许如果你看一下来源,你可以找到一种方法来纠正它。

另外,我在Scipy邮件列表中找到了this message,它表示使用s = 0.0(如在给定的代码中),根据消息的编写者使用上面的过程自然地拟合样条曲线。我确实发现this splmake函数可以选择自然样条拟合,但是在查看源代码后我发现它还没有实现。