机器学习过程分为训练过程和预测过程。训练过程得到一个模型,预测过程得到预测结果。为了节省时间,最好能够在每次执行预测时,调用已经构造好的模型,而不是每次预测前都需要重新训练一次模型。
以“决策树”为例,最好能够在每次执行分类时调用已经构造好的决策树。可以使用Python中的pickle模块序列化对象。序列化对象可以在磁盘上保存对象pickle.dump(),并在需要的时候读取出来pickle.load()。任何对象都可以执行序列化操作,字典对象也不例外!!!
代码:
1 import pickle 2 #将决策树模型inputTree(字典对象)存储在文件filename中 3 def storeTree(inputTree,filename): 4 fw=open(filename,'w') 5 pickle.dump(inputTree,fw) 6 fw.close() 7 #读取文件filename中的决策树 8 def grabTree(filename): 9 fr=open(filename) 10 return pickle.load(fr)
打开Dos客户端测试:
In [11]:用字典存储一颗决策树,myTree={'no surfacing':{0:'no',1:{'flippers':{0:'no',1:'yes'}}}}
In [12]: 得到文件"classifierStorage.txt",打开文件看看序列化后的样子:
In [13]: 读取“classifierStorage.txt”中的决策树
Out [13]: 输出“myTree”