从python调用R方法时出错

时间:2016-08-25 22:26:03

标签: python r

我试图从python中调用R编码的随机森林预测方法。使用rpy2实现相同。

我的要求是为每一行(代表一个会话)实时调用预测方法,并在python中获取预测输出以标记该会话。

我已经获得了训练有素的模型并加载到了R.创建了一个数据框并调用了预测方法。

收到一个错误。

这是python代码的片段。

from rpy2.robjects import pandas2ri
import rpy2.robjects as ro

pandas2ri.activate()

ro.r('require(xlsx)')
ro.r('require(caret)')
ro.r('require(rpart)')
ro.r('require(e1071)')
ro.r('library(randomForest)')
ro.r('library(stringr)')
ro.r('library(plyr)')
ro.r('library(sqldf)')
ro.r('library(splitstackshape)')
ro.r('library(cluster)')
ro.r('library(fpc)')
ro.r('fit <-readRDS("RFmodel.rds")')


dataRec = ro.DataFrame({ "protocoldesc":protocoldesc ,"serverflag":serverflag ,....})

#Assign it to name test in R
ro.globalenv['test'] = dataRec;

ro.r('predboom<-predict(fit, test, type="response")')

##creating a column for the pred
ro.r('test$pred <- predboom')
ro.r('content_type <-as.char(test$pred)')
print(ro.r('content_type'))

获得以下错误

Traceback (most recent call last):
  File "TestAnalytics.py", line 717, in <module>
    ro.r('predboom<-predict(fit, test, type="response")')
  File "/usr/lib64/python2.7/site-packages/rpy2/robjects/__init__.py", line 359, in __call__
    res = self.eval(p)
  File "/usr/lib64/python2.7/site-packages/rpy2/robjects/functions.py", line 178, in __call__
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/rpy2/robjects/functions.py", line 106, in __call__
    res = super(Function, self).__call__(*new_args, **new_kwargs)
rpy2.rinterface.RRuntimeError: Error in eval(expr, envir, enclos) : object 'skew1' not found

不知道这个skew1对象是什么以及如何修复它。

0 个答案:

没有答案