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

664d3b53e26148571c2d867c92834282.png

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

在数据库中保存模型并使用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
f02604980b4e4647c92d771e303d3245.png

现在我们将在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)
051692f4defa8991c6e684d61cd36c2d.png

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
1c3b66ec5e564c0f3ba01b5be5543e38.png

现在我们将编写另一个辅助函数来加载保存的机器学习模型。这个函数首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)
a77b66eb8c31aec69007a3aa1c1e241c.png

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

#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))
3d3009d211e8646f9cd6ae90ebeb6ad8.png

[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可以轻松地在数据库中保存和加载模型。保存这些模型后,我们可以在将来随时使用它们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抓狐狸python_​用Python操作Kubernetes的Job

本文给出Python SDK操作Kubernetes Job的更多示例代码,以及相关解释。pip install kubernetes初始化from kubernetes.client import BatchV1Apifrom kubernetes.config import load_kube_configload_kube_config()batch BatchV1Api()load_kube_config 是从默认位置…

mysql8支持myISAM_mysql菜鸟手迹8--mysql存储引擎之MyISAM

MyISAM可以将表压缩为只读表来节省空间。使用myisampack工具来进行表压缩。MyISAM支持全文索引;一般使用instr()来替代。myisam在写的时候,会产生一个表级锁。myisam锁的时候使用一个lock命令,lock类型有write锁(只有当前线程可以做读写删操作…

mysql双机数据热备份_配置MySQL数据库双机热备份

1、mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现 mysql 数据库的热备份。  2、要想实现双机的热备首先要了解主从…

java token_Java实现基于token认证的方法示例

随着互联网的不断发展,技术的迭代也非常之快。我们的用户认证也从刚开始的用户名密码转变到基于cookie的session认证,然而到了今天,这种认证已经不能满足与我们的业务需求了(分布式,微服务)。我们采用了另外一种认证方式&#xff…

重置mysql+密码_MySQL重置root密码的几种方法(windows+Linux)

重置root密码的方法:windows系统下:1、停止mysql服务;2、新建文件init-root.txt,写上如下内容:update mysql.user set password password(‘newpwd‘) where user ‘root‘;flush privileges;保存;3、打开命令行&…

java 中导出word后压缩文件_Java批量导出word压缩后的zip文件案例

一、js代码,由于参数比较大所以利用form表单使用post导出function export_word(){var selectedRows $("#dg").datagrid("getSelections");if (selectedRows.length0) {showAlertWarning("请选择一条的信息...");return;}if (selecte…

opengl es java_java – 在Android OpenGL ES App中加载纹理

1)您应该根据需要分配尽可能多的纹理名称.一个用于您正在使用的每个纹理.加载纹理是一项非常繁重的操作,会使渲染管道停顿.所以,你永远不应该在游戏循环中加载纹理.您应该在呈现纹理的应用程序状态之前具有加载状态.加载状态负责加载渲染中所需的所有纹理.因此,当您需要渲染几何…

java io 视频 下载_Java下载映客主播视频回放到电脑硬盘

Java下载映客主播视频回放到电脑硬盘使用Java下载映客回放到电脑硬盘使用方法:在映客app播放回放视频时,分享到QQ,就可以得到url,其中的liveid属性就是视频ID。源代码由 [**海思教育**](http://edu.itshidu.com/) 提供&#xff0c…

java jni helloword_JNI学习一:编写HelloWorld程序

转载请说明出处~本文教程翻译jni官方文档的部分内容。要查看Jni官方文档,请点击这里先感叹一下时光如水,岁月不留人哇有木有!!!认真想想在XMU的这三年,真的改变了我好多。我还清楚地记得学习C语言写的第一个…

【学习记录】macOS的Redis安装及基本使用

【学习记录】macOS的Redis安装及基本使用一. Redis的安装与启动二. 简单使用① 尝试插入第一个key-value② Redis的数据类型与基本使用字符串列表字典(哈希表)集合有序集合三. 杂乱无章的笔记一. Redis的安装与启动 打开终端,输入以下命令即…

java scipt 对象 函数_java script 基本函数

Math.random() 是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值。日期时间函数(需要用变量调用):var b new Date(); //获取当前时间b.getTime() ; //获取时间戳b.getFullYear(); //获取年…

[学习记录] macOS下的Nginx安装 Nginx基本知识

[学习记录] macOS下的Nginx安装 && Nginx基本知识一. 安装相关1. 安装:直接通过brew安装即可2. 启动:3. 成功运行判断:4. 改端口号:由于8080这个端口号很容易冲突,因此需要改一个其他的端口号。二. Nginx 学习…

java 下载限速_Java 文件下载限流算法

在做文件下载功能时,为了避免下载功能将服务器的带宽打满,从而影响服务器的其他服务。我们可以设计一个限流器来限制下载的速率,从而限制下载服务所占用的带宽。一、算法思路定义一个数据块chunk(单位 bytes)以及允许的最大速率 maxRate(单位…

【学习笔记】JAVA基础——异常处理部分

文章目录前言简介一. try、catch与finally① try && catch② finally③ throws补充:JVM 相关二. 异常的分类① 分类解释与思维导图三. 自定义异常例子:Hero类的attack方法的isDeadException。四. 上传代码到GIT① 首先在github新建一个仓库Java_…

java 反射 json_java 反射机制构建JSON字符串

java 反射机制构建JSON字符串。接着上一篇文章、今天继续学习利用java 反射机制构建JSON字符串。JSON的格式跟使用的方式方法就不讲了、这个百度一下就有……好了今天心情很糟糕、直接上代码吧![java]view plaincopyprint?import java.lang.reflect.Field;import j…

【学习笔记】数据链路层的差错控制——检错编码与纠错编码(海明码、奇偶检验码与CRC循环冗余码)

文章目录前言一. 差错控制简介二.补充知识三. 检错编码(1)奇偶检验码组成:构造方法:以奇检验码为例。举个例子:检验码求法:错误检测方法:特点(2)CRC循环冗余检验码三要素…

【学习笔记】数据链路层——流量控制:停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)

文章目录一. 流量控制① 必要性② 数据链路层 VS 传输层③ 定义④ 方法1)停止等待协议2)滑动窗口协议关系:包括:3)协议对比二. 停止-等待协议必要性应用情况① 无差错情况② 有差错情况1)数据帧丢失&#x…

java线程唤醒与等待_Java线程的等待与唤醒

生产者和消费者必须使用同步代码块包裹起来,保证等待和唤醒只能有一个执行,同步使用的锁对象必须保证唯一Thread中重要方法void wait() 在其他线程调用此对象的notify()方法或notifyall()方法前,导致当前线程等待void notify() 唤醒在此对象监…

【学习笔记】数据链路层——信道划分访问控制(FDM、TDM、STDM、WDM、CDM CDMA)

PPT截自王道考研B站教程 一. 铺垫知识 ① 传输数据使用的两种链路 星型、总线型都是广播式结构。 星型更有容错率,总线型断一个则全断。 ② 介质访问控制 定义 采取一定措施,使得两对节点之间的通信不会发生互相干扰的情况。 分类 多路复用&…

stream of java_java8新特性之强大的Stream API

Stream APIStream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数 据库查询。也可以使用Stream API来并行…