在Java中使用Python Pickle对象

问题描述

我在pickle object中有一个RandomForestClassifierPython。我想在Java中使用此对象进行预测。那可能吗?如我所见,Python pickle object可以that的方式用于Java,但是我不确定它是否适用于机器学习模型。

解决方法

简短回答:否。

长答案:

根据python文档:

pickle 模块实现了用于序列化和反序列化 Python 对象结构的二进制协议。 “pickling”是将 Python 对象层次结构转换为字节流的过程,“unpickling”是相反的操作,将字节流(来自二进制文件或类字节对象)转换回对象层次结构。酸洗(和取消酸洗)也称为“序列化”、“编组”、1 或“扁平化”;然而,为了避免混淆,这里使用的术语是“酸洗”和“解酸”

这意味着给定的字节流仅在 Python 中在语法上有效,除非您想编写对象转译器。

您以错误的方式处理问题。 ML 模型只是一组系数/参数,您已经对其进行了优化,以获得目标变量的近似值。您应该能够采用该组系数/参数并在任何语言中使用它。

,

我们可以使用 jython 中的 cPickle 类

https://javadoc.io/doc/org.python/jython-standalone/2.7.1/org/python/modules/cPickle.html