如何将mysql表中存储的数据转换成r公式,比如python中的lm()?

2024-09-21 03:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在使用rpy2在python中拟合logistic回归模型之前找到vif值。我的数据驻留在mysql数据库中。我面临的问题是如何在r函数中使用它。这就是我试图在python中复制的内容

library(car)
vif_result <- vif(lm(target~var1+var2+var3+var4+var5+var6+var7+var8+var9+var10, data=modeldata))

我的代码

from rpy2 import robjects as ro
import MySQLdb
db = MySQLdb.connect(host="localhost", user="***", passwd="***")
cur = db.cursor()
cur.execute("use python")
q= "select identifier,target,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10 from test"
cur.execute(q)
testdata=cur.fetchall()
ro.r.library('car')
vif=ro.r["vif"]
lm=ro.r["lm"]
mydata= ro.r["data.frame"]
modeldata=mydata(testdata)

现在这是抛出错误

Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
test= ro.r['as.data.frame'](testdata)
File "C:\Python27\lib\site-packages\rpy2\robjects\functions.py", line 86, in __call__
return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
File "C:\Python27\lib\site-packages\rpy2\robjects\functions.py", line 31, in __call__
new_args = [conversion.py2ri(a) for a in args]
File "C:\Python27\lib\site-packages\rpy2\robjects\__init__.py", line 134, in       default_py2ri
raise(ValueError("Nothing can be done for the type %s at the moment." %(type(o))))

ValueError:目前无法对类型执行任何操作。你知道吗

我想在下面的公式中使用tuple testdata中的数据stotred。但我无法将从mysql查询中提取的数据转换为robject或数据帧。你知道吗

formula=ro.Formula(target~var1+var2+var3+var4+var5+var6+var7+var8+var9+var10, data=modeldata)
vif_result=vif(lm(formula))

我正在测试的一种方法是将每个字段转换为列表,然后转换为要在R中使用的数据帧。但是这种方法需要大量的计算时间。必须有更好的方法来实现这一点。我试着在rpy2上查找资源,但除了rpy2文档之外,找不到任何好的东西。你知道吗

非常感谢您的帮助

提前谢谢


Tags: 数据intargetdatarolinecallfile

热门问题