機械学習・自然言語処理の勉強メモ

学んだことのメモやまとめ

pickle(オブジェクトデータ構造を直列化・非直列化)

Python のオブジェクトを直列化・非直列化するための機能を提供。
直列化 (Serialize) ・・オブジェクトをバイト列などの表現に変換
非直列化 (Deserialize) ・・バイト列を元にオブジェクトを復元する

pickle モジュールをC言語で再実装したcPickleモジュールは、 1000倍速いらしい。

iblinux.rios.co.jp

import cPickle

# Write
cPickle.dump("Hoge Hoge", open("hoge.pickle", "wb"))
# Read
hoge = cPickle.load(open("hoge.pickle", "rb"))
print hoge 
>> Hoge Hoge

hoge_dic = {1: "a", 2: "b", 3: "c"}
hoge_list = ["a", "b", "c"]
cPickle.dump([hoge_dic, hoge_list], open("hoge.pickle", "wb"))
hoge_dic, hoge_list = cPickle.load(open("hoge.pickle", "rb"))

scikit-learnのモデルの場合も同様

model = LogisticRegression()
model.fit(X_train, Y_train)
filename = 'finalized_model.sav'
pickle.dump(model, open(filename, 'wb'))