持久化Tf-Idf数据

我想存储TF-IDF矩阵,以便不必每次都重新计算。我使用的是scikit-learn的TfIdfVectorizer。是使用pickle保存它还是存储在数据库中更有效呢?

一些背景:我使用k-means聚类来提供文档推荐。由于经常添加新文档,我希望存储文档的TF-IDF值,以便重新计算聚类。


回答:

使用pickle(特别是使用joblib.dump)适合短期存储,例如在交互式会话中保存部分结果,或将模型从开发服务器传输到生产服务器。

然而,pickle格式依赖于模型的类定义,这些定义可能在不同版本的scikit-learn之间发生变化。

如果您计划长期保存模型,并希望在未来的scikit-learn版本中能够加载它,我建议您编写自己的独立于实现的持久化模型。

我还建议使用HDF5文件格式(例如在PyTables中使用)或其他支持高效存储数值数组的数据库系统。

另外,请查看scipy.sparse中用于稀疏矩阵表示的内部CSR和COO数据结构,以找到一种高效的方法将这些数据存储在数据库中。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注