【问题标题】:faster way to use the scikit-learn trained model使用 scikit-learn 训练模型的更快方法
【发布时间】:2015-10-14 07:16:11
【问题描述】:

我使用 scikit-learn 训练了一个预测模型,并使用 pickle 将其保存到硬盘。 pickle文件有58M,相当大。

为了使用模型,我写了这样的东西:

def loadModel(pkl_fn):
    with open(pkl_fn, 'r') as f:
         return pickle.load(f)


if __name__ == "__main__":
    import sys
    feature_vals = read_features(sys.argv[1])
    model = loadModel("./model.pkl")
    # predict 
    # model.predict(feature_vals)

我想知道在命令行中多次运行程序时的效率。

Pickle 文件的加载速度应该很快,但有什么方法可以加快速度吗?我可以将整个东西编译成二进制可执行文件吗?

【问题讨论】:

  • 您能否提供有关您的用例的更多详细信息?据我了解,您每次要进行预测时都会运行此程序,这种情况多久发生一次?
  • 您是否有理由不能运行一次加载代码,然后将其用于所有预测?如果每个预测加载相同的内容,为什么还必须为每个预测运行加载代码?即使你加快加载速度,这种使用方法仍然会导致一些速度变慢,所以我会考虑避免多次加载。
  • @IVlad ,我正在为一些生物物理学家写这个小工具,“加载一个,预测一个”是他们要求的。

标签: python machine-learning scikit-learn pickle


【解决方案1】:

如果担心加载时间,可以使用joblib.dumpjoblib.load,在scikit-learn的情况下比pickle效率更高。

有关完整(非常简单)的示例,请参阅the docs 或来自 ogrisel 的相关答案: Save classifier to disk in scikit-learn

【讨论】:

  • 谢谢@user3914041,我会试试joblib.load
猜你喜欢
  • 2014-10-13
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 2020-01-24
  • 2022-01-05
  • 2016-01-19
  • 2014-09-17
  • 2016-07-15
相关资源
最近更新 更多