rpy2在由预测函数返回的FactorVector中返回“否”

问题描述

我正在尝试使用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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...