有好多种方法可以,需要根据你使用的框架来区分。
1、使用Flask直接加载sklearn、tf的model文件
就是将model用flask发布web api服务,java通过http调用即可
比如这个是把sklearn发布成flask服务:https://towardsdatascience.com/a-flask-api-for-serving-scikit-learn-models-c8bcdaa41daatowardsdatascience.com
这个把tf model发布成flask服务:https://blog.csdn.net/wangjian1204/article/details/76732337blog.csdn.net
2、如果是tf,tf本身支持一套tf serving的机制
流程大致是:导出model,用tf serving的docker镜像加载,然后提供grpc或者http服务
然后Java调用grpc服务或者Http服务都可以
参见:https://github.com/tensorflow/servinggithub.com
3、使用jpmml将sklearn、tf的服务导出
pmml是一种模型定义语言,不过貌似没有使用起来,因为只能表达简单的模型,一些几百万参数的深度学习模型,这个pmml无能为力。
但是简单的模型可以用导出成pmml,然后java直接加载pmml文件即可;
jpmml已经提供了很多框架的导出功能,参见:Java PMML APIgithub.com
4、最笨的方法:将模型的参数导出成JSON等格式,JAVA直接加载
比如LR模型,直接把所有参数导出成JSON等格式,JAVA加载参数列表;
当新来的预测请求时,自己做乘法,把参数和变量相乘,然后做sigmoid等等处理,得到最终预测结果。
供参考,觉得不错的可以关注公众号:蚂蚁学Python,一起学习