在unix中为sklearn模型创建已编译的可执行文件

时间:2014-01-15 20:41:50

标签: python scikit-learn

我希望能够使用scikit-learn在Python中训练模型,然后将此模型保存到磁盘,使其现在成为二进制编译的可执行文件。

理想情况下,例如,它可以是一个分类器,通过在unix shell中执行类似下面的操作,输入特征向量,并返回类标签。

$ ./model 2 1 2 1.5 3 2 5 0 1
-1

由于scikit-learn的大部分内容都是C,我希望这是可能的。

是否可以在sklearn中创建模型,保留它并将模型嵌入可执行文件中?

1 个答案:

答案 0 :(得分:1)

无需为此编写C程序,您只需编写Python命令行脚本来解析命令行参数,调用模型并在stdout上输出预测。我想解析您可以使用的复杂命令行参数选项:http://docs.python.org/dev/library/argparse.html

渲染脚本可执行文件并将其放入PATH中,然后就完成了。

  

由于scikit-learn的大部分内容都是C,我希望这是可能的。

这不是真的。大多数scikit-learn是用Cython编写的Python代码+编译扩展。我们还包装了2个小型C ++库(libsvm和liblinear)。但是没有可以链接的公共C API。

如果你真的对冻结scikit感兴趣 - 通过将所有内容嵌入到一个独立的二进制文件夹中来学习使它独立于系统Python和numpy,scipy依赖项,你可以尝试使用cx_Freeze或类似但这可能很复杂。