训练好了一个Model 以后总需要保存和再次预测, 所以保存和读取我们的sklearn model也是同样重要的一步。

比如,我们根据房源样本数据训练了一下房价模型,当用户输入自己的房子后,我们就需要根据训练好的房价模型来预测用户房子的价格。

这样就需要在训练模型后把模型保存起来,在使用模型时把模型读取出来对输入的数据进行预测。

这里保存和读取模型有两种方法,都非常简单,差别在于保存和读取速度的快慢上,因为有一个是利用了多进程机制,下面我们分别来看一下。

创建模型

首先我们创建模型并训练数据:

from sklearn.datasets import load_digits
from sklearn.svm import SVC # 加载数据
digits = load_digits()
X = digits.data
y = digits.target model = SVC()
model.fit(X, y)

用pickle读写模型

pickle是python中用于数据序列化的模块,因此,对于模型的序列化也可以用此模块来进行:

import pickle
# 以写二进制的方式打开文件
file = open("D:/data/python/model.pickle", "wb")
# 把模型写入到文件中
pickle.dump(model, file)
# 关闭文件
file.close()

这样会创建D:/data/python/model.pickle的文件,大家可以自己去尝试下看看,我这边生成的文件大概1M左右。

有了模型文件之后,在进行预测时我们就不需要进行训练了,而只要把这个训练好的模型文件读取出来,然后直接进行预测就可以:

import pickle
# 以读二进制的方式打开文件
file = open("D:/data/python/model.pickle", "rb")
# 把模型从文件中读取出来
model = pickle.load(file)
# 关闭文件
file.close() # 用模型进行预测
from sklearn.datasets import load_digits
digits = load_digits()
X = digits.data
y = digits.target print("预测值:", model.predict(X[15:20]))
print("实际值:", y[15:20])

输出为:

预测值: [5 6 7 8 9]
实际值: [5 6 7 8 9]

用joblib进行模型的读写

直接上代码:

from sklearn.datasets import load_digits
from sklearn.svm import SVC # 用模型进行训练
digits = load_digits()
X = digits.data
y = digits.target
model = SVC()
model.fit(X, y) # 用joblib保存模型
from sklearn.externals import joblib
joblib.dump(model, "D:/data/python/model.joblib")

这样就会生成D:/data/python/model.joblib文件,看起来比pickle生成的文件大一点点。

读取模型:

# 用joblib读取模型
from sklearn.externals import joblib
model = joblib.load("D:/data/python/model.joblib") # 对数据进行预测
from sklearn.datasets import load_digits
digits = load_digits()
X = digits.data
y = digits.target print("预测值:", model.predict(X[15:20]))
print("实际值:", y[15:20])

输出为:

预测值: [5 6 7 8 9]
实际值: [5 6 7 8 9]

看起来也很简单,同pickle的区别是joblib会以多进程方式来进行,据说性能会好些。

转sklearn保存模型的更多相关文章

  1. sklearn保存模型-【老鱼学sklearn】

    训练好了一个Model 以后总需要保存和再次预测, 所以保存和读取我们的sklearn model也是同样重要的一步. 比如,我们根据房源样本数据训练了一下房价模型,当用户输入自己的房子后,我们就需要 ...

  2. sklearn保存模型的两种方式

    sklearn 中模型保存的两种方法   一. sklearn中提供了高效的模型持久化模块joblib,将模型保存至硬盘. from sklearn.externals import joblib # ...

  3. sklearn保存模型

    # View more python tutorials on my Youtube and Youku channel!!! # Youtube video tutorial: https://ww ...

  4. 【sklearn】from sklearn.extermals import joblib(保存模型和加载模型)

    原创博文,转载请注明出处! sklearn中保存和加载模型的方法 1.载入模块 from sklearn.externals joblib. model = joblib. # -*- coding: ...

  5. Python 3 利用 Dlib 19.7 和 sklearn机器学习模型 实现人脸微笑检测

    0.引言  利用机器学习的方法训练微笑检测模型,给一张人脸照片,判断是否微笑:   使用的数据集中69张没笑脸,65张有笑脸,训练结果识别精度在95%附近: 效果: 图1 示例效果 工程利用pytho ...

  6. caffe使用ctrl-c不能保存模型

    caffe使用Ctrl-c 不能保存模型: 是因为使用的是 tee输出日志 解决方法:kill -s SIGINT <proc_id> 或者使用 GLOG_log_dir=/path/to ...

  7. pytorch加载和保存模型

    在模型完成训练后,我们需要将训练好的模型保存为一个文件供测试使用,或者因为一些原因我们需要继续之前的状态训练之前保存的模型,那么如何在PyTorch中保存和恢复模型呢? 方法一(推荐): 第一种方法也 ...

  8. PyTorch保存模型与加载模型+Finetune预训练模型使用

    Pytorch 保存模型与加载模型 PyTorch之保存加载模型 参数初始化参 数的初始化其实就是对参数赋值.而我们需要学习的参数其实都是Variable,它其实是对Tensor的封装,同时提供了da ...

  9. (原)tensorflow保存模型及载入保存的模型

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7198773.html 参考网址: http://stackoverflow.com/questions ...

随机推荐

  1. SpringMVC -- 梗概--源码--壹--数据传递

    附:实体类 Class : User package com.c61.entity; import java.text.SimpleDateFormat; import java.util.Date; ...

  2. WPF送走控件的focus方法

    我们可以调用Focus()方法,让WPF控件获得焦点, 那我现在不想要焦点了, 如何把这个包袱抛出去? 可以,  恩, 没有Unfocus(), 但下面的方法也许可行(把焦点抛给另一个不知道的控件): ...

  3. js精准时间迭代器(定时器)

    /** * 精准时间迭代器 * Create By Tujia @2017.05.22 * * 使用示例: * window.setMyInterval(function(){ * console.l ...

  4. PostgreSQL存储过程(5)-异常错误处理

    1. 异常错误处理 在PL/pgSQL函数中,如果没有异常捕获,函数会在发生错误时直接退出,与其相关的事物也会随之回滚.我们可以通过使用带有EXCEPTION子句的BEGIN块来捕获异常并使其从中恢复 ...

  5. hbase2.0.0-安装部署

    依赖hadoop 环境,我这边的版本是hadoop-2.6.5 选择hbase2.0.0版本的时候,去官网查看支持的hadoop版本 1.伪分布式安装 下载:http://mirror.bit.edu ...

  6. Splash plugins_enabled 属性

    plugins_enabled属性可以控制浏览器插件(如 Flash 插件)是否开启.默认情况下,此属性是 false ,表示不开启. function main(splash, args) spla ...

  7. React Native(十三)——ios键盘挡住textInput

    渐入佳境 用React Native重构的项目也快接近尾声,剩下的就是适配ios的功能了.慢慢地也从中琢磨出了一点门道,于是就遇见了键盘遮挡textInput问题斑斑: 正常页面: android点击 ...

  8. linux禁止IPv6

    1. 禁止加载IPv6模块 # echo "install ipv6 /bin/true" > /etc/modprobe.d/disable-ipv6.conf 每当系统需 ...

  9. Win8应用开发 入门篇(三) UX交互导航模式

    导航模式(Windows 应用商店应用)   在本文中 分层模式 画布上导航 顶部应用栏 语义式缩放 相关主题 组织 Windows 应用商店应用中的内容,以便用户可以轻松而直观地进行导航.使用正确的 ...

  10. css方法 - 移动端reset汇总与注释

    1.解决移动端触摸a元素,会有蓝色阴影 正常状态: 点击时状态: a{ outline:none; -webkit-tap-highlight-color: rgba(,,,); } -webkit- ...