将 Python kmode 聚类模型保存到磁盘的方法是什么?



Background

我目前正在使用kmodespython 包对包含分类参数的数据执行无监督学习。

我需要能够保存这些模型,因为我计划在生产管道中使用它,如果管道中的某些内容出现故障,我希望能够"回滚"到较旧的工作模型。

要求

我可以使用任何文件格式,包括 HDF5 格式。 我也不执着于kmodes,但是我确实需要能够处理混合的分类和数字数据。


帮助

我似乎找不到任何可以将完整的kmodes模型保存到磁盘的方法,但我希望我只是错过了一些明显的东西。 请提供任何可能的选择。

让我们从项目自述文件中的示例聚类开始:

import numpy as np
from kmodes.kmodes import KModes
# random categorical data
data = np.random.choice(20, (100, 10))
km = KModes(n_clusters=4, init='Huang', n_init=5, verbose=1)
clusters = km.fit_predict(data)

我们现在可以使用泡菜模块保存它:

import pickle
# It is important to use binary access
with open('km.pickle', 'wb') as f:
pickle.dump(km, f)

要读回对象,请使用

with open('km.pickle', 'rb') as f:
km = pickle.load(f)

kmodes和kprototypes类似乎继承自scikit learn的BaseEstimator。在 sklearn 中,您可以使用 pickle 通过标准序列化保存/加载经过训练的模型。

以下是 sklearn 文档的链接,介绍如何使用 pickle 或 joblib 中的序列化代码保存模型: http://scikit-learn.org/stable/modules/model_persistence.html

这个答案能解决你的问题吗?kmode 模型在您的应用程序中不可序列化吗?

你正在寻找 Python pickle 库。

pickle 模块实现了一种算法,用于将任意 Python 对象转换为一系列字节。此过程也称为序列化"对象。然后可以传输或存储表示对象的字节流,然后重建以创建具有相同特征的新对象。

我认为这对您实施它非常有用的资源。

另一个要研究的库包括cPickle。为什么?

首先,cPickle 可以比泡菜快 1000 倍,因为 前者在 C 中实现。

鉴于您需要将模型保存到磁盘,这可能意味着您的模型相当大。时间是重中之重 - 这将为您节省大量时间。

其次,在cPickle模块中 可调用对象 Pickler() 和 Unpickler() 是函数,而不是类。这 意味着您不能使用它们来派生自定义酸洗和 解腌子类。大多数应用程序都不需要这样做 功能,应该受益于大幅改进的性能 的 cPickle 模块。

因此,这取决于您的程序和所需的功能。使用cPickle的一个很好的例子可以在这里找到

相关内容

最新更新