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