如何在GoLang中使用经过训练的Scikit Learn Python模型



我在Python环境中训练了一个Scikit-Learn模型,我需要在GoLang中使用它进行推理。你能帮我如何在python中导出/保存我的模型,然后在GoLang中使用它吗。

我找到了一个神经网络模型的解决方案,我可以将Tensorflow模型保存为ONNX格式,并在GoLang中使用ONNX-go加载它。但这是针对神经网络模型的。但我无法为scikit学习模型找到答案。

找到了以下解决方案。

解决方案1:

我们应该以PMML格式导出python模型,然后使用GoScore Library 在GoLang中导入

以下是使用GoScore 加载PMML文件的GoLang代码片段

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有关,但它仍然相关(

解决方案2

SkLearn-Porter是python中的一个库,用于将模型移植到各种语言中。不幸的是,它目前并不支持Go的所有模型。

您可以开发一个REST-json API服务来公开您的scikit-learn模型并与go客户端通信。

最新更新