机器学习模型保存技巧

数据科学领域,探索数据、预处理(可能需要创建额外的特征)以及将数据输入模型是常见的工作流程。在这种情况下,即使使用的是最简单的线性回归模型(多变量),由于所有输入特征和参数的原因,模型可能会变得非常大,反复重新训练模型将非常耗时。因此,最简单的解决方案是保存模型,以便在以后的时间进行推理或预测。虽然Keras模型API提供了保存深度学习模型的功能,但对于大多数初学者来说,在机器学习中保存模型可能会感到困惑。此外,由于估计器具有大量的参数,保存它们是非常明智的。

目录

  • 引言
  • 加载数据集并创建模型
  • 创建模型文件
  • 保存模型
  • 方法1 - Pickle - 2步
  • 常见问题解答

加载数据集并创建模型

将使用一个房价预测数据集,该数据集具有单一特征区域(为了演示目的)。工作是预测给定区域的价格。为了保持简单,将只有4-5个数据点,将使用的模型将是线性回归模型,该模型仅适合数据集并计算所有数据点预测差异的实际差异的平方。

将快速创建模型文件,将保存以供以后使用。以下是将要保存的5个步骤。

  1. 首先,将加载所有必需的依赖项。

    import pandas as pd import numpy as np from sklearn import linear_model
  2. 现在,将使用pd.read_csv()函数将数据加载到pandas dataframe(train_df)中,并使用df.head()方法打印前5行。

    train_df = pd.read_csv('train.csv') print(train_df.head())
  3. 创建模型对象,实际上将是一个LinearRegression分类器,然后使用训练样本和训练标签拟合模型,模型的工作是找到最佳直线拟合。

    model = linear_model.LinearRegression() model.fit(train_df[['area']], train_df.price)
  4. 正如知道的,直线有一个系数和一个截距在方程中,所以应该检查这些值,因为sklearn提供了一些方便的属性。这些可以这样检查:

    model.coef_ model.intercept_
  5. 最后,为了完整性,可以测试模型预测5000平方英尺房屋的价格。

    model.predict([[5000]])

保存模型

现在是保存创建的模型的时候了。将查看保存模型的2个快速技巧。此外,还将提供使用哪种方法的指导。

许多人可能熟悉pickle模块,如果不是,了解pickle模块允许使用反序列化来pickle文件是很好的,这意味着简单地将对象分解为其组成组件。例如,模型文件的属性就像之前看到的那样。

  1. 要使用pickle保存文件,需要打开一个文件,在某个别名下加载它,并转储模型的所有信息。这可以使用以下代码实现:

    import pickle with open('model_pkl', 'wb') as files: pickle.dump(model, files)
  2. 上述步骤之后,可以在目录中看到一个名为model_pkl的文件,打开它将显示如下内容:

Joblib模型保存的替代方案,它可以在具有大量NumPy数组/数据的后端上操作,具有许多参数。它可以作为单独的模块使用(参考此处)或使用Sci-Kit Learn库。为了简单起见,将使用第二种方法。

  1. 首先,将从sklearn的外部类导入joblib。

    from sklearn.externals import joblib
  2. joblib.dump(model, 'model_jlib')
Q1. 什么是sklearn保存模型?
Scikit-learn(sklearn)是一个流行的Python机器学习库。要保存训练有素的sklearn模型,可以使用“joblib”模块,该模块是sklearn库的一部分。
Q2. 如何在Python中保存训练有素的模型?
要在Python中保存训练有素的模型,可以使用“pickle”或“joblib”模块。这两个模块都提供了序列化和反序列化Python对象的函数,包括训练有素的机器学习模型。
Q3. 什么是pickle保存模型?
在Python中,“pickle”模块提供了一种序列化和反序列化Python对象的方法,包括训练有素的机器学习模型。通过使用pickle模块保存训练有素的模型,可以在新数据上重用模型进行预测,而无需从头开始重新训练模型。
Q4. 什么是机器学习中的pickle?
在机器学习中,pickle是用于序列化和保存训练有素的模型作为字节流的Python模块。这允许模型被存储,然后使用pickle.dump()和pickle.load()等函数加载用于预测,而无需重新训练。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485