如何将训练有素的 scikit-learn 模型导入 android 项目

Posted

技术标签:

【中文标题】如何将训练有素的 scikit-learn 模型导入 android 项目【英文标题】:how to import trained scikit-learn model to android project 【发布时间】:2018-11-26 13:52:32 【问题描述】:

我正在使用 scikit-learn 库在 python 中进行分类项目。我正在使用随机森林进行分类。我正在使用具有 31 个特征的 UCI 数据集。我已经训练了模型并保存了最终的腌制模型。 现在我有一个 pickle 文件和 python 脚本,用于提取未来预测的特征。


现在我想在 android 中为我训练的模型开发用户界面,如何在 android 项目中导入我训练的最终模型和 feature_extraction python 脚本。我正在使用 scikit-learn 并使用 anaconda 和 spyder 来开发模型。

【问题讨论】:

q than a 发布了 Answer 说“Sklearn-porter 是部分解决方案。https://github.com/nok/sklearn-porter” 【参考方案1】:

这里有几个不同的选项,但没有一个非常流畅。

A) 将 Python 嵌入到您的 Android 应用中

相当复杂,尤其是对于像 scikit-learn 这样具有原生 C 扩展的库。但是,一旦设置完成,您就可以使用任何您想要的 Python 代码。 Python-for-Android 项目中提供了一些简化流程的工具。 https://github.com/kivy/python-for-android Kivy 是一个 GUI 框架,允许使用纯 Python 编写 Android 应用程序。如果您还不了解 Java 并且有一个现有的应用程序,那么这可能是最简单的方法。

B) 用 Ja​​va 重写你的机器学习算法 例如使用 Weka 框架和他们的 RandomForests 实现。重写完成后,在 Android 应用中的集成将毫无困难。

【讨论】:

你知道是否有办法首先将 sklearn 模型转换为 keras 或 tensorflow 模型?如果是这样,那么我们可以将其转换为可以在 android 中运行的 tflite

以上是关于如何将训练有素的 scikit-learn 模型导入 android 项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 scikit-learn 中提取 MultinomialNB Pipeline 训练模型中的单词特征?

使用 scikit-learn 训练线性回归模型后,如何对原始数据集中不存在的新数据点进行预测?

python机器学习——使用scikit-learn训练感知机模型

使用 scikit-learn 为 NER 训练 NLP 对数线性模型

如何将模型 (GLM) 从 h2o 移植到 scikit-learn?

将 scikit-learn SVM 模型转换为 LibSVM