首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以将预处理对象保存在scikit中--学习?

问有没有一种方法可以将预处理对象保存在scikit中--学习?
EN

Stack Overflow用户
提问于 2017-03-16 19:36:36
回答 2查看 4K关注 0票数 3

我正在建立一个神经网络,目的是对未来的新数据进行预测。首先利用sklearn.preprocessing对训练数据进行预处理,然后对模型进行训练,然后进行预测,然后关闭程序。将来,当新数据出现时,我必须使用相同的预处理尺度来转换新数据,然后再将其放入模型中。目前,我必须加载所有的旧数据,适合预处理,然后转换新的数据与这些预处理程序。是否有一种方法可以保存预处理对象(如sklearn.preprocessing.StandardScaler),这样我就可以加载旧对象而不必重新创建它们了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-16 19:46:07

正如lejlot所提到的,您可以使用库泡菜将经过训练的网络保存为硬盘驱动器中的文件,然后您只需要加载它就可以开始进行预测。

下面是一个示例,说明如何使用泡菜保存和加载python对象:

代码语言:javascript
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2020-03-24 22:44:01

我想除了泡菜,你也可以用joblib来做这件事。如Scikit中所述-学习手册3.4。模型持久性

在scikit的具体案例中--学习,最好使用joblib替换泡菜(dump & load),它在内部携带大型numpy数组的对象上更有效,就像安装的scikit-learn估值器一样,但只能对磁盘而不是字符串进行筛选:

代码语言:javascript
复制
from joblib import dump, load
dump(clf, 'filename.joblib') 

稍后,您可以用以下方法重新加载带泡沫化的模型(可能在另一个Python过程中):

代码语言:javascript
复制
clf = load('filename.joblib') 

有关更多信息,请参考其他帖子,保存StandardScaler()模型,以便在新数据集中使用,在学习中保存MinMaxScaler模型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42843352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档