R中的smooth.spline函数允许在粗糙度(由二阶导数的积分平方定义)和拟合点(通过对残差的平方求和所定义)之间进行权衡.这种权衡是通过spar或df参数完成的.在一个极端,你获得最小方块线,另一个你得到一个非常摇摆的曲线,它与所有数据点相交(或者如果你有重复的x值,具有不同的y值,则为平均值)
我在Python中查看了scipy.interpolate.UnivariateSpline和其他样条变量,但是,他们似乎只是通过增加结的数量来进行权衡,并为允许的SS残差设置一个阈值(称为s).相比之下,R中的smooth.spline允许在所有x值处具有节点,而不必具有击中所有点的摇摆曲线 - 惩罚来自二阶导数.
Python是否具有以这种方式运行的样条拟合机制?允许所有结,但惩罚二阶导数?
我试图找到一个python软件包,该软件包将提供一个选项,以使自然平滑样条线与用户可选的平滑因子相匹配。有没有实现的方法?如果没有,您将如何使用可用的工具自己实施?
所谓自然样条曲线,是指应该满足以下条件:拟合函数在端点处的二阶导数为零(线性)。
通过平滑样条曲线,我的意思是样条曲线不应被“插值”(通过所有数据点)。我想自己决定正确的平滑系数lambda(请参见Wikipedia页面以平滑样条线)。