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