如何在RPy中使用smooth.spline的lambda参数,而无需Python将其作为lambda进行插值

问题描述 投票:0回答:2

[我想在Python中使用R中的自然三次平滑样条曲线smooth.spline(就像许多其他人一样想要Python natural smoothing splinesIs there a Python equivalent to the smooth.spline function in RPython SciPy UnivariateSpline vs R smooth.spline等))因此,我像rpy2中所述使用https://morioh.com/p/eb4151821dc4,但我想直接设置lambda而不是spar

import rpy2.robjects as robjects
r_y = robjects.FloatVector(y_train)
r_x = robjects.FloatVector(x_train)

r_smooth_spline = robjects.r['smooth.spline'] #extract R function# run smoothing function
spline1 = r_smooth_spline(x=r_x, y=r_y, lambda=42)
#alternative: spline1 = r_smooth_spline(x=r_x, y=r_y, spar=0.7) would work fine, but I would like to control lambda dirctly
ySpline=np.array(robjects.r['predict'](spline1,robjects.FloatVector(x_smooth)).rx2('y'))
plt.plot(x_smooth,ySpline)

[当我这样做时,spline1 = r_smooth_spline(x=r_x, y=r_y, lambda=42)行不起作用,因为Python已经对lambda进行了预定义的解释(您可以从lambda的蓝色代码突出显示出来):(我希望将lambda解释为平滑惩罚参数lambda。

如果将lambda替换为spar,我会得到自然的三次样条,但我想直接控制lambda

python r rpy2 spline smoothing
2个回答
0
投票
您可以在函数调用中使用Python的**<dict>来指定R个命名参数,这些参数的名称在Python中语法上无效。

0
投票
也许您可以在调用rpy2时使用Function.rcall()smooth.spline方法?
© www.soinside.com 2019 - 2024. All rights reserved.