[Python][Scikit-learn][ML学习笔记03]模型的本地存储与固化

>扩展资料记录

Scikit-Learn文档:Model persistence

pickle — Python object serialization

Persistence


>Joblib

这里用的Joblib进行python对象固化:

# 保存该对象-joblib
from sklearn.externals import joblib
# 压缩存储
joblib.dump(my_object, 'my_objectpikcel.pkl', compress=True)
# 载入模型
reload_obj = joblib.load('my_object.pkl')


>实例:鸢尾花数据集(逻辑回归)预测模型的本地固化

样例代码(Jupyter文件)下载:https://download.csdn.net/download/shenpibaipao/10388901

功能函数:

# 制图
import matplotlib.pyplot as plt
def paint(predicted, target):
    fig, ax = plt.subplots() # import matplotlib.pyplot as plt  
    ax.plot(range(len(predicted)), predicted, 'gx', label='Predicted Class')  
    ax.plot(range(len(target)), target, 'r--', label='True Class')  
    plt.show()# http://blog.csdn.net/shenpibaipao
# 计算正确率
def acc(predicted, target):
    sums = 0  
    for i in range(len(predicted)):  
        if predicted[i] == target[i]:  
            sums += 1  
    print 'ACC: ', sums * 100.0 / len(predicted), "%"
# 计算正确率&制图
def acc_and_paint(predicted, target):
    acc(predicted, target)
    paint(predicted, target)
训练与预测模型:
from sklearn import datasets
from sklearn import linear_model
from sklearn import model_selection
# 导入数据集
iris = datasets.load_iris() # from sklearn import datasets
# 切分数据集
train_X, test_X, train_y, test_y = \
   model_selection.train_test_split(iris.data,
                         iris.target,
                         test_size=0.2,
                         random_state=45)
# 导入模型
lg = linear_model.LogisticRegression(multi_class='ovr') # 采用 one-vs-rest 的多分类策略
lg.fit(train_X, train_y)
predicted = lg.predict(test_X)
# 判断分类正误率并制图
acc_and_paint(predicted, test_y)
保存模型并载入模型进行使用:
# 保存该模型-joblib
from sklearn.externals import joblib
# 压缩存储
joblib.dump(lg, 'joblib_my_lg_pikcel.pkl', compress=True)
# 载入模型
reload_lg=joblib.load('joblib_my_lg_pikcel.pkl')
# 利用载入好的模型进行预测
predicted = reload_lg.predict(test_X)   
# 判断分类正误率并制图
acc_and_paint(predicted, test_y)
结果如下:




猜你喜欢

转载自blog.csdn.net/shenpibaipao/article/details/80176841
今日推荐