我们知道,当我们训练机器学习或深入学习模型时,我们必须保存训练过的模型,以便将来进行预测。现在的训练模型非常昂贵,所以如果我们能够保存它们并将其用于解决其他一些问题。例如,一个训练过的能够识别汽车的神经网络,可以用迁移学习方法对其进行微调后用于识别卡车。

在数据库中保存模型并使用python加载它们是很容易的。我们选择MongoDB是因为它是一个开源的文档数据库和领先的NoSQL数据库。现在让我们使用python逐步实现这个过程。

首先,使用pip安装pymongo,如下所示,

pip install pymongo

如果要使用MongoDB,请确保在系统中安装了MongoDB。

我们将首先在iris数据集上训练xgboost模型,然后将其转储到数据库中并将其加载回来并用于预测。导入Python库,如下所示:

#importing important librariesimport pymongoimport pandas as pdimport numpy as npfrom sklearn import datasetsimport pickleimport timeimport pymongo

现在我们将在iris数据集上训练xgboost

iris = datasets.load_iris()X = iris.datay = iris.targetfrom sklearn.cross_validation import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)from xgboost import XGBClassifierxgb = XGBClassifier()xgb.fit(X_train, y_train)

XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,

colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,

max_depth=3, min_child_weight=1, missing=None, n_estimators=100,

n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,

reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,

silent=True, subsample=1)

训练结束后,我们将编写一个辅助函数来保存机器学习模型,该机器学习模型将首先对模型进行pickle。Pickling只是将任何对象转换为字节。我们必须pickle我们的模型,因为我们不能直接将对象保存到MongoDB中。此函数还创建连接、数据库和collection,然后使用名称保存模型。

def save_model_to_db(model, client, db, dbconnection, model_name): import pickle import time import pymongo #pickling the model pickled_model = pickle.dumps(model)  #saving model to mongoDB # creating connection myclient = pymongo.MongoClient(client)  #creating database in mongodb mydb = myclient[db]  #creating collection mycon = mydb[dbconnection] info = mycon.insert_one({model_name: pickled_model, 'name': model_name, 'created_time':time.time()}) print(info.inserted_id, ' saved with this id successfully!')  details = { 'inserted_id':info.inserted_id, 'model_name':model_name, 'created_time':time.time() }  return details

现在我们将编写另一个辅助函数来加载保存的机器学习模型。这个函数首unpickles保存的模型,然后返回模型。在这里,我们使用find()函数并传递它的模型名来从数据库中获取模型。

def load_saved_model_from_db(model_name, client, db, dbconnection): json_data = {}  #saving model to mongoDB # creating connection myclient = pymongo.MongoClient(client)  #creating database in mongodb mydb = myclient[db]  #creating collection mycon = mydb[dbconnection] data = mycon.find({'name': model_name})   for i in data: json_data = i #fetching model from db pickled_model = json_data[model_name]  return pickle.loads(pickled_model)

在编写用于保存和加载模型的辅助函数之后,我们只需要调用它们,如下所示

#saving model to mongodetails = save_model_to_db(model = xgb, client ='mongodb://localhost:27017/', db = 'mydatabase',  dbconnection = 'customers', model_name = 'myxgb')#fetching model from mongoxgb = load_saved_model_from_db(model_name = details['model_name'], client = 'mongodb://localhost:27017/',  db = 'mydatabase', dbconnection = 'customers')print(xgb.predict(X_test))

[1 0 2 1 1 0 1 2 1 1 2 0 0 0 0 1 2 1 1 2 0 2 0 2 2 2 2 2 0 0 0 0 1 0 0 2 1 0 0 0 2 1 1 0 0 1 1 2 1 2]

使用python可以轻松地在数据库中保存和加载模型。保存这些模型后,我们可以在将来随时使用它们。

python保存模型的路径怎么写_使用python在MongoDB中保存机器学习(ML)和深度学习(DL)模型...相关推荐

  1. python后端开发工作内容怎么写_【Python后端开发岗位职责_Python后端开发职责/工作内容】-猎聘岗位职责频道...

    python后端开发工程师 深圳市超频三科技股份有限公司 深圳市超频三科技股份有限公司,超频三,超频三科技,超频三 职责: 1.负责集成各种维度的数据源,使用各种数据获取技巧,转换.分析.调度.存储数 ...

  2. HALCON 21.11:深度学习笔记---模型(8)

    HALCON 21.11:深度学习笔记---模型(8) HALCON 21.11.0.0中,实现了深度学习方法. 本章阐述了HALCON中深度学习(DL)模型的一般概念和数据处理. 从概念上讲,HAL ...

  3. 深度学习英文文献_文献速递 | 预测术后30天死亡率的深度学习模型

    文献基本信息 题目:Deep-learning model for predicting 30-day postoperative mortality 作者:Bradley A. Fritz , et ...

  4. keras 受限玻尔兹曼机_目前深度学习的模型有哪几种,适用于哪些问题?

    深度学习的模型有很多, 目前开发者最常用的深度学习模型与架构包括 CNN.DBN.RNN.RNTN.自动编码器.GAN 等.雷锋网搜集整理了涉及以上话题的精品文章,供初学者参考,加速深度学习新手入门. ...

  5. 深度学习算法模型_不到5分钟的3种深度学习算法,第2部分深度顺序模型

    深度学习算法模型 In the last article, we looked at models that deal with non-time-series data. Time to turn ...

  6. 人脸口罩检测现开源PyTorch、TensorFlow、MXNet等全部五大主流深度学习框架模型和代码...

    号外!号外! 现在,AIZOO开源PyTorch.TensorFlow.MXNet.Keras和Caffe五大主流深度学习框架的人脸检测模型和代码啦! 先附上Github链接为敬. https://g ...

  7. 深度学习实战——模型推理优化(模型压缩与加速)

    忆如完整项目/代码详见github:https://github.com/yiru1225(转载标明出处 勿白嫖 star for projects thanks) 目录 系列文章目录 一.实验思路综 ...

  8. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP

    原文地址可以查看更多信息 本文主要参考于:Multilayer Perceptron  python源代码(github下载 CSDN免费下载) 本文主要介绍含有单隐层的MLP的建模及实现.建议在阅读 ...

  9. 深度学习基本模型浅析

    深度学习基本模型浅析 前言 台湾李宏毅的深度学习课程说实话讲得还是比较不错的,有需要的话还是比较推荐学习,这篇也是基于它的深度学习基本结构的讲解的总结. 深度学习的三个步骤 深度学习首先是我们要构建一 ...

最新文章

  1. 美多商城之商品(首页广告)
  2. “sudo: go:找不到命令”完美解决方案
  3. 返回指定大小的数组_python中数组和矩阵的基础以及应用
  4. Apache Ant安装 验证
  5. 模型算法-支持向量机SVM
  6. 【项目实践】【01】发货管理系统 SPS (2007年12月23日更新)
  7. [SCOI2015]小凸玩矩阵 (匈牙利+二分)
  8. 【渝粤教育】国家开放大学2018年春季 0111-21T妇产科护理学 参考试题
  9. Spring ScheduledTimerTask 定时任务执行
  10. Redis开发运维实践上线部署规划之内存规划
  11. NGN学习笔记8——NGN的安全问题
  12. .net MVC小尝试
  13. 分享2022年淘宝/天猫/京东618自动任务助手,带抢购功能源码
  14. 统计软件简介与数据操作
  15. Centos宝塔面板清理垃圾空间
  16. vue:如何实现文字竖排
  17. 教你使用SQLite Autoincrement(自动递增)
  18. PlayStation5上手体验
  19. HashSet和HashMap
  20. Java实战项目开发视频教程分享

热门文章

  1. linux int64_t 头文件,这对int64_t的处理是GCC和Clang的错误吗?
  2. oracle11g session,Oracle11g中Killsession心得
  3. 以图搜图 图像匹配_图像匹配,基于深度学习DenseNet实现以图搜图功能
  4. linux80端口检查,Linux下基于端口的服务检查脚本
  5. 双基因突变患者_双任务干预对携带LRRK2基因突变的帕金森病患者手灵活性的影响...
  6. MATLAB(四)在高等数学中的应用
  7. 二维与三维之间的桥梁——点云
  8. itextPdf~将PDF页面大小转为A4格式
  9. python语言中包含的标准数据类型_Python对象——标准类型的分类
  10. oracle告警日志备份,教你怎样用Oracle方便地查看报警日志错误