登录
首页 >  Golang >  Go问答

在GoLang中使用训练好的Scikit Learn Python模型的方法

来源:stackoverflow

时间:2024-02-08 23:09:22 424浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《在GoLang中使用训练好的Scikit Learn Python模型的方法》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

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

我找到了一个神经网络模型的解决方案,我可以将 Tensorflow 模型保存为 ONNX 格式,并使用 GoLang 中的 Onnx-go 加载它。但这是神经网络模型特有的。但我无法弄清楚 scikit-learn 模型的情况。


正确答案


找到以下解决方案。

解决方案1:

我们应该以 pmml 格式导出 python 模型,然后使用 GoScore 库导入 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]

找到了这个参考this medium article的解决方案。(虽然它的r模型到golang,但它仍然相关)

解决方案2

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

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《在GoLang中使用训练好的Scikit Learn Python模型的方法》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>