在平滑.splineR中的函数允许在粗糙度(由二阶导数的积分平方定义)和拟合点(由残差平方求和定义)之间进行权衡。这种权衡是通过spar或df参数来实现的。在一个极端,你得到了最小平方线,而另一个极端你得到了一条非常摇摆的曲线,它与所有的数据点相交(如果你有不同的y值的重复的x值,则是平均值)
我看过了scipy.interpolate.UnivariateSpline然而,Python中的其他样条线变体似乎只能通过增加结的数量和为允许的SS残差设置一个阈值(称为s)来权衡。相比之下平滑.spline在R中,允许在所有的x值处都有结,而不必有一条弯曲的曲线击中所有点——惩罚来自二阶导数。在
Python是否有这样的样条曲线拟合机制?允许所有结但惩罚二阶导数?在
通过对谷歌的研究,我得出结论
相比之下平滑.spline在R中,允许在所有x值处有结,而不必有一条弯曲的曲线,它击中了所有点,惩罚来自二阶导数。在
您可以在Python中使用R函数与
rpy2
:如果您想直接设置
lambda
:spline1 = r_smooth_spline(x=r_x, y=r_y, lambda=42)
不起作用,因为lambda
在Python中已经有了另一个含义,但是有一个解决方案:How to use the lambda argument of smooth.spline in RPy WITHOUT Python interprating it as lambda。要使代码运行,首先需要定义数据},如果想以全高清分辨率在-3和5之间绘制,则可以定义
x_train
和{x_smooth=np.array(np.linspace(-3,5,1920)).
。我一直在寻找完全相同的东西,但是我不想把代码翻译成Python。不过,spliter包似乎是一个选项:https://github.com/bgrimstad/splinter
相关问题 更多 >
编程相关推荐