sklearn scikitlearn scikit learn python pickle scikit-learn

python - scikitlearn - ¿Cuáles son los diferentes casos de uso de joblib versus pickle?



python 3.6 pickle (2)

Antecedentes: recién estoy comenzando con scikit-learn, y leo en la parte inferior de la página sobre joblib, versus pickle .

puede ser más interesante usar el reemplazo de pickle de joblib (joblib.dump y joblib.load), que es más eficiente en big data, pero solo puede guardarse en el disco y no en una cadena

Leí este Q & A sobre pickle, casos de uso común para pickle en Python y me pregunto si la comunidad aquí puede compartir las diferencias entre joblib y pickle. ¿Cuándo debería uno usar uno sobre otro?


joblib suele ser significativamente más rápido en matrices numpy grandes porque tiene un manejo especial para los buffers de matriz de la estructura de datos numpy. Para conocer los detalles de implementación, puede echarle un vistazo al código fuente . También puede comprimir esos datos sobre la marcha mientras se decapa usando zlib.

joblib también hace posible mapear en memoria el búfer de datos de una matriz numpy pickled joblib sin comprimir cuando se carga, lo que permite compartir memoria entre procesos.


Me encontré con la misma pregunta, así que probé esta ya que necesito cargar un archivo grande de salmuera

#comapare pickle loaders from time import time import pickle import os try: import cPickle except: print "Cannot import cPickle" import joblib t1 = time() lis = [] d = pickle.load(open("classi.pickle","r")) print "time for loading file size with pickle", os.path.getsize("classi.pickle"),"KB =>", time()-t1 t1 = time() cPickle.load(open("classi.pickle","r")) print "time for loading file size with cpickle", os.path.getsize("classi.pickle"),"KB =>", time()-t1 t1 = time() joblib.load("classi.pickle") print "time for loading file size joblib", os.path.getsize("classi.pickle"),"KB =>", time()-t1

La salida para esto es

time for loading file size with pickle 1154320653 KB => 6.75876188278 time for loading file size with cpickle 1154320653 KB => 52.6876490116 time for loading file size joblib 1154320653 KB => 6.27503800392

De acuerdo con este joblib funciona mejor que el módulo cPickle y Pickle de estos 3 módulos. Gracias