zoukankan      html  css  js  c++  java
  • sklearn 中模型保存的两种方法

    一、 sklearn中提供了高效的模型持久化模块joblib,将模型保存至硬盘。

    from sklearn.externals import joblib
    #lr是一个LogisticRegression模型
    joblib.dump(lr, 'lr.model')
    lr = joblib.load('lr.model')
    二、pickle
    >>> from sklearn import svm
    >>> from sklearn import datasets
    >>> clf = svm.SVC()
    >>> iris = datasets.load_iris()
    >>> X, y = iris.data, iris.target
    >>> clf.fit(X, y)  
    SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
        decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',
        max_iter=-1, probability=False, random_state=None, shrinking=True,
        tol=0.001, verbose=False)
    
    >>> import pickle
    >>> s = pickle.dumps(clf)
    >>> clf2 = pickle.loads(s)
    >>> clf2.predict(X[0:1])
    array([0])
    >>> y[0]
    0


    或者 :
    >>> from sklearn.externals import joblib
    >>> joblib.dump(clf, 'filename.pkl') 
    >>> clf = joblib.load('filename.pkl') 


    两种保存Model的模块picklejoblib

    使用 pickle 保存 

    首先简单建立与训练一个SVCModel。

    from sklearn import svm
    from sklearn import datasets
    
    clf = svm.SVC()
    iris = datasets.load_iris()
    X, y = iris.data, iris.target
    clf.fit(X,y)

    ==========================================================================================================

    使用pickle保存读取训练好的Model。 (若忘记什么是pickle,可以回顾13.8 pickle 保存数据视频。)

    import pickle #pickle模块
    
    #保存Model(注:save文件夹要预先建立,否则会报错)
    with open('save/clf.pickle', 'wb') as f:
        pickle.dump(clf, f)
    
    #读取Model
    with open('save/clf.pickle', 'rb') as f:
        clf2 = pickle.load(f)
        #测试读取后的Model
        print(clf2.predict(X[0:1]))
    
    ==========================================================================================================

    使用 joblib 保存 

    joblibsklearn的外部模块。

    from sklearn.externals import joblib #jbolib模块
    
    #保存Model(注:save文件夹要预先建立,否则会报错)
    joblib.dump(clf, 'save/clf.pkl')
    
    #读取Model
    clf3 = joblib.load('save/clf.pkl')
    
    #测试读取后的Model
    print(clf3.predict(X[0:1]))
    

    最后可以知道joblib在使用上比较容易,读取速度也相对pickle快。

    链接:https://www.zhihu.com/question/27187105/answer/55895472

  • 相关阅读:
    使用SignTool对软件安装包进行数字签名(二)--进行数字签名
    使用SignTool对软件安装包进行数字签名(一)--制作证书
    三角形相关算法--求解三角形顶点坐标
    子网掩码与子网个数、主机地址个数的关系
    pgsql中的lateral使用小结
    Git中rebase失败了如何进行恢复
    灰度发布
    go 中的WaitGroup
    pgsql中json格式数组查询结果变成了字符串
    Go中的unsafe
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/10106725.html
Copyright © 2011-2022 走看看