我在Python环境中训练了一个Scikit学习模型,我需要使用它在GoLang中进行推理。请您帮助我如何导出/保存我的模型在python中,然后在GoLang中使用它。
我找到了一种神经网络模型的解决方案,可以将Tensorflow模型保存为ONNX格式,并使用GoLang中的Onnx加载它。但这是特定于神经网络模型。但我想不出科学学习模型的意义。
发布于 2022-03-09 07:41:22
找到了以下解决方案。
Solution1:
我们应该以PMML格式导出python模型,然后使用GoLang库导入GoScore
下面是一个使用GoLang加载PMML文件的GoScore代码片段
modelXml, err := ioutil.ReadFile("titanic_rf.pmml")
if (err != nil) {
panic(err)
}
var model goscore.RandomForest
xml.Unmarshal([]byte(modelXml), &model)
features := map[string]interface{}{
"Sex": "male",
"Parch": 0,
"Age": 30,
"Fare": 9.6875,
"Pclass": 2,
"SibSp": 0,
"Embarked": "Q",
}
score, _ := model.Score(features, "0") // scores 0.486
score, _ := model.Score(features, "1") // scores 0.514
score, _ := model.LabelScores(features) // map[0:243 1:257]找到了引用这篇媒体文章的解决方案。(虽然其R模型适用于GoLang,但仍然适用)
Solution2
斯克伦-波特是python中的库,可以将模型移植到各种语言中。不幸的是,目前它并不支持所有的Go模型。
发布于 2022-03-09 02:45:13
您可以开发REST json服务,以公开您的scikit学习模型,并与go客户端进行通信。
https://stackoverflow.com/questions/71403705
复制相似问题