我想存储 TF-IDF 矩阵,这样我就不必一直重新计算它。我正在使用 scikit-learn 的TfIdfVectorizer
. 腌制或将其存储在数据库中更有效吗?
一些背景:我正在使用 k-means 聚类来提供文档推荐。由于经常添加新文档,因此我想存储文档的 TF-IDF 值,以便重新计算集群。
我想存储 TF-IDF 矩阵,这样我就不必一直重新计算它。我正在使用 scikit-learn 的TfIdfVectorizer
. 腌制或将其存储在数据库中更有效吗?
一些背景:我正在使用 k-means 聚类来提供文档推荐。由于经常添加新文档,因此我想存储文档的 TF-IDF 值,以便重新计算集群。
酸洗(尤其是使用joblib.dump)有利于短期存储,例如在交互式会话中保存部分结果或将模型从开发服务器发送到生产服务器。
然而,酸洗格式取决于模型的类定义,这些模型可能会从一个版本的 scikit-learn 更改为另一个版本。
如果您计划长时间保留该模型并使其可以在未来版本的 scikit-learn 中加载,我建议您编写自己的独立于实现的持久性模型。
我还建议使用 HDF5 文件格式(例如在 PyTables 中使用)或其他支持有效存储数值数组的数据库系统。
还可以查看 scipy.sparse 的稀疏矩阵表示的内部 CSR 和 COO 数据结构,以找到一种将它们存储在数据库中的有效方法。