gpt4 book ai didi

python - 如何在 RPy 中使用 smooth.spline 的 lambda 参数而无需 Python 将其解释为 lambda

转载 作者:行者123 更新时间:2023-11-28 20:30:12 27 4
gpt4 key购买 nike

我想在 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 中描述的 lambda ,但我想直接设置 spar 而不是 spline1 = r_smooth_spline(x=r_x, y=r_y, lambda=42) :

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)

当我这样做时,lambda 行不起作用,因为 Python 已经预定义了 lambda 的解释(您可以从 lambda 的蓝色代码突出显示中看到这一点):(我希望将 lambda 解释为平滑惩罚参数 lambda。

如果我用 spar 替换 lambda 我会得到一个自然的三次样条,但我想直接控制 ojit_code。

最佳答案

这个小技巧可以解决您遇到的特定问题,方法是让您在字符串中写入“lambda”。

kwargs = {"x": r_x, "y": r_y, "lambda":  42}
spline1 = r_smooth_spline(**kwargs)

在一般情况下,您可以使用元组和字典轻松传递参数容器。

# as normal
f = function("foo", "bar", my_kwarg="my_value")

# the same call using argument containers
args = ("foo", "bar")
kwargs = {"my_kwarg": "my_value"}
f = function(*args, **kwargs)

关于python - 如何在 RPy 中使用 smooth.spline 的 lambda 参数而无需 Python 将其解释为 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58239011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com