gpt4 book ai didi

python - rpy2 和 R 调试

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:10 24 4
gpt4 key购买 nike

经过一些麻烦我成功安装了 rpy2。

我的目标是构建模型(gam;Simon Wood 的 mgcv 库)并使用预测函数,方法是将 pandas 数据帧从 python 通过 rpy2 传递到 gam 模型并检索预测。

R 脚本通过加载 txt 文件进行测试,并通过与 python/rpy2 脚本调用的相同的 R 函数对其进行处理,并且工作正常。在 python 脚本中,我从文本文件的 pickled 版本开始(就好像我在我的最终代码中,从 pandas 数据帧开始)。

我还能够在 R 脚本中触发其他有意义的错误(传递一个空数据帧,或一个缺少列的数据帧以成功执行预测,这两者都会像在 R 中一样触发错误。)我这样做实际进入 gam 函数,输入数据完好无损。

我快完成了,但我一直收到这个错误:

ExtractData(object, data, NULL) 错误: 'names' 属性 [1] 的长度必须与向量 [0] 的长度相同

我不知道有什么方法可以在我的 python 脚本中从 R 获得更多反馈。我该如何调试?或者任何人都可以指出 R 中可能存在的问题吗?或者这是我没有完全掌握的“.convert_to_r_dataframe()”函数的一部分???

R 代码:

f_clean_data <- function(df) {
t = df
... some preprocessing
t

}

tc <- f_clean_data(t)


f_py_gam_predict <- function(gam, df) {
dfc = f_clean_data(df)
result <- predict(gam, dfc)
result
}

bc_gam = gam(BC ~
+s()
.... some gam model

, data=tc, method="REML"
)
summary(bc_gam)


testfile = 'a_test_file.txt'

ttest <- read.table(file=testfile ,sep='\t',header=TRUE);

result = f_py_gam_predict(bc_gam, ttest)

f_py_gam_predict 在 python 脚本中可用。

谢谢,吕克

最佳答案

检查您提供给 s() 的数据类型。我还在 ExtractData(object, data, NULL) 中遇到了 Error : 'names' attribute [1] must be the same length as the vector [0] 当我使用日期时间解释变量时。我通过转换为自开始以来的天数来解决这个问题。

> library(lubridate)
> library(mgcv)
> df <- data.frame(x=today() + 1:20, y=1:20)
> gam(y~s(x), data=df)
Error in ExtractData(object, data, knots) :
'names' attribute [1] must be the same length as the vector [0]
> df$xnum <- (df$x - df$x[1])/ddays(1)
> str(df)
'data.frame': 20 obs. of 3 variables:
$ x : Date, format: "2013-04-09" "2013-04-10" "2013-04-11" "2013-04-12" ...
$ y : int 1 2 3 4 5 6 7 8 9 10 ...
$ xnum: num 0 1 2 3 4 5 6 7 8 9 ...
> gam(y~s(xnum), data=df)

最后一次通话正常。

至于调试,我经常从 rpy2 调用 save.image(),然后将 .RData 文件加载到普通 R session 中以供进一步检查。

关于python - rpy2 和 R 调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15742983/

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