Utilisation de joblib pour la compression de fichiers lors de l'enregistrement

joblib est un module Python qui permet de sérialiser des objets de manière plus efficace que pickle, surtout pour des objets volumineux comme les modèles de machine learning ou les tableaux NumPy. Il offre en plus la possibilité de compresser les fichiers sérialisés, ce qui permet de réduire l’espace disque nécessaire pour les stocker.

Fonctions :

  • joblib.dump()

    La fonction joblib.dump() permet de sérialiser un objet Python, tout en offrant une option pour la compression du fichier généré. Cela peut être utile pour réduire la taille des fichiers de modèles ou d'objets volumineux, tout en conservant la possibilité de les recharger plus tard.

    Importation :

    import joblib

    Attributs :

    Paramètre Type Description Valeur par défaut
    obj object L'objet Python à sérialiser et à compresser (peut être un modèle, une liste, un dictionnaire, etc.). None
    filename str Le nom du fichier dans lequel l'objet sera enregistré (extension .joblib). None
    compress int, optionnel (Optionnel) Le niveau de compression à appliquer. Une valeur entre 0 (pas de compression) et 9 (compression maximale). Par défaut, la compression est de niveau 3. 3

    Exemple de code :

    import joblib
    
    # Création d'un objet, ici un modèle de régression linéaire pour l'exemple
    from sklearn.linear_model import LinearRegression
    
    model = LinearRegression()
    model.fit([[1], [2], [3]], [1, 2, 3])
    
    # Sérialisation et compression de l'objet 'model'
    joblib.dump(model, 'model_compressed.joblib', compress=3)

    Explication du code :

    1. Nous utilisons le module joblib pour sérialiser l'objet model, qui est un modèle de régression linéaire dans cet exemple.
    2. L'objet est sauvegardé sous le nom de fichier model_compressed.joblib avec une compression de niveau 3, ce qui permet de réduire la taille du fichier tout en conservant les données du modèle.
  • joblib.load()

    La fonction joblib.load() permet de charger un objet sérialisé et compressé précédemment avec joblib.dump(). Elle prend en charge la décompression automatique lors de la lecture du fichier.

    Importation :

    import joblib

    Attributs :

    Paramètre Type Description Valeur par défaut
    filename str Le nom du fichier contenant l'objet sérialisé à charger. None

    Exemple de code :

    import joblib
    
    # Chargement de l'objet 'model' précédemment sérialisé et compressé
    loaded_model = joblib.load('model_compressed.joblib')
    
    # Utilisation du modèle chargé
    print(loaded_model.predict([[4]]))  # Affiche une prédiction basée sur le modèle chargé

    Explication du code :

    1. Nous utilisons joblib.load() pour charger l'objet sérialisé et compressé dans le fichier model_compressed.joblib.
    2. L'objet chargé, ici un modèle de régression linéaire, peut être utilisé directement pour faire des prédictions.

    Avantages de l'utilisation de joblib pour la compression

    • Compression efficace : joblib est optimisé pour sérialiser et compresser des objets volumineux, comme des modèles de machine learning, tout en offrant un bon compromis entre taille du fichier et vitesse de compression.
    • Chargement rapide : Lors du chargement d'objets compressés, joblib gère automatiquement la décompression, ce qui facilite l'utilisation des fichiers compressés tout en maintenant des performances élevées.