更新時間:2022-11-25 來源:黑馬程序員 瀏覽量:
除了pickle方法,sklearn的externals.Joblib模塊同樣提供了讀寫持久化數(shù)據(jù)對象的方法。示例如下。
from sklearn.externals import joblib # ① # 讀取數(shù)據(jù)對象 sklearn_data = joblib.load('sklearn_pickle.gz') # ② print(sklearn_data) # ③ # 對象持久化 joblib.dump(sklearn_data, 'sklearn_pickle_output.gz', compress=3, protocol=4) # ④
代碼①導(dǎo)入sklearn.externals模塊。
代碼②調(diào)用joblib.load方法讀取sklearn_pickle.gz的文件。
代碼③打印sklearn_data。
代碼④調(diào)用joblib.dump方法將sklearn_data保存為sklearn_pickle_output.gz文件,同時設(shè)置壓縮率為3,protocol為4。
?。?)compress設(shè)置文件的壓縮級別,可設(shè)置為[0,9]的整數(shù)值、布爾型或二元數(shù)組:當(dāng)設(shè)置為布爾型且值為True時,默認(rèn)壓縮級別為3;設(shè)置為二元數(shù)組時,第1個值必須是支持壓縮的格式,如zlib、gzip、bz2、lzma等,第2個值是壓縮級別,壓縮級別越高,壓縮率越高,同時需要執(zhí)行的時間越長。
?。?)protocol是pickle.dump中的參數(shù),這里與pickle.coad設(shè)置的參數(shù)是相同的調(diào)用方法,可設(shè)置為[0,4]的任意值,默認(rèn)為3。該值越高,讀取生成的pickle所需的Python版本就越新。
在實際應(yīng)用時,sklearn.externals相對于pickle在大數(shù)據(jù)量下?lián)碛懈玫男阅?。NumPy數(shù)據(jù)(sklearn的默認(rèn)數(shù)據(jù)格式)要優(yōu)于pickle原生的持久化方法,尤其是其支持多種壓縮級別和格式的設(shè)置,這將大大提高持久化的可操作空間。