R 中的 smooth.spline 函数允许在粗糙度(由二阶导数的积分平方定义)和拟合点(通过对残差的平方求和定义)之间进行权衡。这种权衡是由 spar 或 df 参数完成的。在一个极端,你得到最小二乘线,另一个你得到一条非常摆动的曲线,它与所有数据点相交(或者如果你复制了具有不同 y 值的 x 值,则为平均值)
我已经查看了 Python 中的 scipy.interpolate.UnivariateSpline 和其他样条变体,但是,它们似乎只能通过增加结数和为允许的 SS 残差设置阈值(称为 s)来进行权衡。相比之下,R 中的 smooth.spline 允许在所有 x 值处都有结,而不必有一条摆动的曲线到达所有点——惩罚来自二阶导数。
Python 是否具有以这种方式运行的样条拟合机制?允许所有结但惩罚二阶导数?