问题描述
我正在尝试使用rpy2将R中创建的模型导出到Python。找到了一些教程,这就是我在Python中进行转换的方式:
r = robjects.r
numpy2ri.activate()
MODEL_PATH = "test_model"
model_rds_path = "{}.rds".format(MODEL_PATH)
model_dep_path = "{}.dep".format(MODEL_PATH)
model = r.readRDS(model_rds_path)
with open(model_dep_path,"rt") as f:
model_dep_list = [importr(dep.strip()) for dep in f.readlines() if dep.strip()!='']
def predict(X):
if type(X) is not np.ndarray:
X = np.array(X)
pred = r.predict(model,X,probability=True)
return pred
# Example Input
X = np.array([
[22.3,35.6,9.2,12.8,"NE",44,"WNW",13,28,53,32,1015.2,1011.4,28.4,34.7,"No"],# No
[23.8,33.3,8,10.4,"NNW",33,"E",7,20,63,1014.7,1010.4,1,29.2,31.4,# Yes
])
pred = predict(X)
print(pred)
返回值是一个FactorVector,rpy2的文档建议它应包含带有标签的整数值。但这就是我的输出:
No No
Levels: No Yes
我认为我在这里做错了;不仅因为返回了字符串值,而且更重要的是,无论我作为输入传递的内容是什么,预测都是“否”。模型很好-当我在R中运行并传递相同的输入时,它将返回正确的FactorVector。 >
您可以在这里找到用于创建模型和rds文件的R代码:https://paste.ubuntu.com/p/3YC9XKvQjV/
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)