在機器學習中,我們常常需要把訓練好的模型存儲起來,這樣在進行決策時直接將模型讀出,而不需要重新訓練模型,這樣就大大節(jié)約了時間。Python提供的pickle模塊就很好地解決了這個問題,它可以序列化對象并保存到磁盤中,并在需要的時候讀取出來,任何對象都可以執(zhí)行序列化操作。
Pickle模塊中最常用的函數(shù)為:
(1)pickle.dump(obj, file, [,protocol])
函數(shù)的功能:將obj對象序列化存入已經(jīng)打開的file中。
參數(shù)講解:
- obj:想要序列化的obj對象。
- file:文件名稱。
- protocol:序列化使用的協(xié)議。如果該項省略,則默認為0。如果為負值或HIGHEST_PROTOCOL,則使用最高的協(xié)議版本。
(2)pickle.load(file)
函數(shù)的功能:將file中的對象序列化讀出。
參數(shù)講解:
(3)pickle.dumps(obj[, protocol])
函數(shù)的功能:將obj對象序列化為string形式,而不是存入文件中。
參數(shù)講解:
- obj:想要序列化的obj對象。
- protocal:如果該項省略,則默認為0。如果為負值或HIGHEST_PROTOCOL,則使用最高的協(xié)議版本。
(4)pickle.loads(string)
函數(shù)的功能:從string中讀出序列化前的obj對象。
參數(shù)講解:
【注】 dump() 與 load() 相比 dumps() 和 loads() 還有另一種能力:dump()函數(shù)能一個接著一個地將幾個對象序列化存儲到同一個文件中,隨后調用load()來以同樣的順序反序列化讀出這些對象。
【代碼示例】
pickleExample.py
- #coding:utf-8
- __author__ = 'MsLili'
- #pickle模塊主要函數(shù)的應用舉例
- import pickle
- dataList = [[1, 1, 'yes'],
- [1, 1, 'yes'],
- [1, 0, 'no'],
- [0, 1, 'no'],
- [0, 1, 'no']]
- dataDic = { 0: [1, 2, 3, 4],
- 1: ('a', 'b'),
- 2: {'c':'yes','d':'no'}}
-
- #使用dump()將數(shù)據(jù)序列化到文件中
- fw = open('dataFile.txt','wb')
- # Pickle the list using the highest protocol available.
- pickle.dump(dataList, fw, -1)
- # Pickle dictionary using protocol 0.
- pickle.dump(dataDic, fw)
- fw.close()
-
- #使用load()將數(shù)據(jù)從文件中序列化讀出
- fr = open('dataFile.txt','rb')
- data1 = pickle.load(fr)
- print(data1)
- data2 = pickle.load(fr)
- print(data2)
- fr.close()
-
- #使用dumps()和loads()舉例
- p = pickle.dumps(dataList)
- print( pickle.loads(p) )
- p = pickle.dumps(dataDic)
- print( pickle.loads(p) )
結果為:
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請
點擊舉報。