0

我正在构建一个神经网络,目的是在未来对新数据做出预测。我首先使用sklearn.preprocessing预处理训练数据,然后训练模型,然后进行一些预测,然后关闭程序。将来,当新数据进入时,我必须使用相同的预处理比例将新数据转换为模型之前进行转换。目前,我必须加载所有旧数据,适合预处理器,然后用这些预处理器转换新数据。有没有办法让我保存预处理对象对象(如sklearn.preprocessing.StandardScaler),以便我可以加载旧对象而不必重新创建对象?SKlearn:有没有办法保存预处理对象?

+1

这仅仅是一个Python对象,你可以泡制它像任何其他Python对象。 – lejlot

+0

您可以将所有预处理和训练结合到一个管道对象中,然后使用joblib对其进行简单的腌制(推荐用于scikit) –

回答

1

正如lejlot所述,您可以使用库pickle将训练好的网络作为文件保存在硬盘中,然后您只需加载它即可开始进行预测。

下面是关于如何使用泡菜保存和加载Python对象的例子:

import pickle 
import numpy as np 

npTest_obj = np.asarray([[1,2,3],[6,5,4],[8,7,9]]) 

strTest_obj = "pickle example XXXX" 


if __name__ == "__main__": 
    # store object information 
    pickle.dump(npTest_obj, open("npObject.p", "wb")) 
    pickle.dump(strTest_obj, open("strObject.p", "wb")) 

    # read information from file 
    str_readObj = pickle.load(open("strObject.p","rb")) 
    np_readObj = pickle.load(open("npObject.p","rb")) 
    print(str_readObj) 
    print(np_readObj) 
相关问题