更新时间:2022-11-25 来源:黑马程序员 浏览量:
除了pickle方法,sklearn的externals.Joblib模块同样提供了读写持久化数据对象的方法。示例如下。
from sklearn.externals import joblib # ① # 读取数据对象 sklearn_data = joblib.load('sklearn_pickle.gz') # ② print(sklearn_data) # ③ # 对象持久化 joblib.dump(sklearn_data, 'sklearn_pickle_output.gz', compress=3, protocol=4) # ④
代码①导入sklearn.externals模块。
代码②调用joblib.load方法读取sklearn_pickle.gz的文件。
代码③打印sklearn_data。
代码④调用joblib.dump方法将sklearn_data保存为sklearn_pickle_output.gz文件,同时设置压缩率为3,protocol为4。
(1)compress设置文件的压缩级别,可设置为[0,9]的整数值、布尔型或二元数组:当设置为布尔型且值为True时,默认压缩级别为3;设置为二元数组时,第1个值必须是支持压缩的格式,如zlib、gzip、bz2、lzma等,第2个值是压缩级别,压缩级别越高,压缩率越高,同时需要执行的时间越长。
(2)protocol是pickle.dump中的参数,这里与pickle.coad设置的参数是相同的调用方法,可设置为[0,4]的任意值,默认为3。该值越高,读取生成的pickle所需的Python版本就越新。
在实际应用时,sklearn.externals相对于pickle在大数据量下拥有更好的性能。NumPy数据(sklearn的默认数据格式)要优于pickle原生的持久化方法,尤其是其支持多种压缩级别和格式的设置,这将大大提高持久化的可操作空间。