【问题标题】:Sklearn online prediction, batch vs one by oneSklearn 在线预测,batch vs one by one
【发布时间】:2019-03-27 06:30:25
【问题描述】:

正如许多地方所述,对于大小为 10000 的输入数据,批量预测整个数据比逐行预测要快得多(在这两种情况下,model.n_jobs=1)。

我知道一对一的解决方案有很多开销。但是在线服务中,请求是一个接一个的,很难先聚合再批量预测。

另一种解决方案是仅使用 scikit-learn 进行训练/验证,并开发一个项目来加载模型文件并优化逐一预测。

问题是预测项目需要知道每种模型的细节(我们可能使用随机森林、LR等)。

所以我的问题是有什么解决方案可以减少 sklearn 的一对一预测开销?

scikit-learn 版本:0.20.0(你可以提出任何其他版本可以解决这个问题)

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    是,sklearn用于向量操作的优化。我不知道的专门针对网上设置优化代码。这将是很好的轮廓sklearn的性能对单个请求。像随机森林一些方法已经在用Cython重写速度。但是,因为Python会很慢,你可能需要用C重写代码有大的开销部分。对于像GBDT方法,可以考虑使用优化的封装(例如,xgboost)。此外,检查出这些幻灯片是商量加速随机森林:https://www.slideshare.net/glouppe/accelerating-random-forests-in-scikitlearn P>

    【讨论】:

      【解决方案2】:

      您可以尝试使用优化的库,例如 scikit-learn-intelex - https://github.com/intel/scikit-learn-intelex 有针对单行推理的优化,特别是对于 RF 和 kNN 算法

      第一个安装包

      pip install scikit-learn-intelex
      

      然后添加你的python脚本

      from sklearnex import patch_sklearn
      patch_sklearn()
      

      这将加速您的代码,而无需您进行额外的更改

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      猜你喜欢
      • 2012-11-23
      • 2012-05-10
      • 2019-07-14
      • 2013-10-25
      • 2023-03-05
      • 1970-01-01
      • 2021-04-12
      • 2021-11-06
      • 1970-01-01
      相关资源
      最近更新 更多