保存机器学习模型

在机器学习中 scikit学习 在库中,我们需要将经过训练的模型保存在一个文件中,并对其进行恢复,以便重用它,将该模型与其他模型进行比较,在新数据上测试该模型。数据的保存被称为 系列化 ,而恢复数据时调用 反序列化 . 此外,我们还处理不同类型和大小的数据。有些数据集很容易训练,即训练时间较短,但即使使用GPU,大小较大(超过1GB)的数据集也可能需要很长时间在本地机器上训练。当我们在不同的项目或以后的某个时候需要相同的训练数据时,为了避免训练时间的浪费,存储训练模型以便将来随时使用。 有两种方法可以在scikit learn中保存模型:

null
  1. 泡菜串 :pickle模块实现了一个基本但功能强大的算法,用于序列化和反序列化Python对象结构。

Pickle模型提供以下功能—— 泡菜。倾倒 要序列化对象层次结构,只需使用dump()。 泡菜。负载 要反序列化数据流,可以调用loads()函数。

  1. 例子: 让我们在iris数据集上应用K最近邻,然后保存模型。

Python3

import numpy as np
# Load dataset
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
# Split dataset into train and test
X_train, X_test, y_train, y_test =
train_test_split(X, y, test_size = 0.3 ,
random_state = 2018 )
# import KNeighborsClassifier model
from sklearn.neighbors import KNeighborsClassifier as KNN
knn = KNN(n_neighbors = 3 )
# train model
knn.fit(X_train, y_train)


图片[1]-保存机器学习模型-yiteyi-C++库

  1. 使用pickle将模型保存到字符串-

Python3

import pickle
# Save the trained model as a pickle string.
saved_model = pickle.dumps(knn)
# Load the pickled model
knn_from_pickle = pickle.loads(saved_model)
# Use the loaded pickled model to make predictions
knn_from_pickle.predict(X_test)


  1. 输出:

图片[2]-保存机器学习模型-yiteyi-C++库

  1. 使用joblib将模型作为文件进行pickle :Joblib是pickle的替代品,因为它在承载大型numpy数组的对象上更有效。这些函数还接受类似文件的对象,而不是文件名。

乔布里。倾倒 序列化对象层次结构的步骤 乔布里。负载 对数据流进行反序列化

  1. 使用joblib保存到pickle文件–

Python3

import joblib
# Save the model as a pickle in a file
joblib.dump(knn, 'filename.pkl' )
# Load the model from the file
knn_from_joblib = joblib.load( 'filename.pkl' )
# Use the loaded model to make predictions
knn_from_joblib.predict(X_test)


  1. 输出:

图片[3]-保存机器学习模型-yiteyi-C++库

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享