java调用python模型
- PMML格式
使用java自带的Runtime.getRuntime().exec(args);方法直接调用python脚本
PMML格式
1、首先将python代码训练的模型保存为pmml格式,代码如下
model = xgb.XGBClassifier()
from sklearn2pmml import PMMLPipeline
pipeline = PMMLPipeline([("classifier", model)])
pipeline.fit(X_train,y_train)
from sklearn2pmml import sklearn2pmml
sklearn2pmml(pipeline, "xgb.pmml", with_repr = True)
然后使用java读取pmml文件对数据进行预测,
后来选择使用java调用虚拟机的方式运行python脚本。
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import javax.xml.bind.JAXBException;
import org.dmg.pmml.FieldName;
import org.dmg.pmml.PMML;
import org.jpmml.evaluator.ModelEvaluator;
import org.jpmml.evaluator.ModelEvaluatorFactory;
import org.jpmml.model.PMMLUtil;
import org.xml.sax.SAXException;
/**
* 读取pmml 获取模型
*
* @author liaotuo
*
*/
public class ModelInvoker {
private ModelEvaluator modelEvaluator;
// 通过文件读取模型
public ModelInvoker(String pmmlFileName) {
PMML pmml = null;
InputStream is = null;
try {
if (pmmlFileName != null) {
is = ModelInvoker.class.getClassLoader().getResourceAsStream(pmmlFileName);
pmml = PMMLUtil.unmarshal(is);
}
try {
is.close();
} <