2012-06-19 3 views
3

Я хочу сохранить матрицу TF-IDF, поэтому мне не нужно ее пересчитывать все время. Я использую scikit-learn TfIdfVectorizer. Является ли более эффективным рассортировать его или хранить его в базе данных?Данные Persist Tf-Idf

Некоторые контексты: Я использую кластеры k-mean для предоставления рекомендации по документу. Поскольку новые документы добавляются часто, я хотел бы сохранить значения TF-IDF документов, чтобы я мог пересчитать кластеры.

+1

Зависит от того, что вы хотите с этим сделать, конечно. –

ответ

6

Травление (особенно с использованием joblib.dump) хорошо подходит для краткосрочного хранения, например. для сохранения частичных результатов в интерактивном сеансе или отправки модели с сервера разработки на производственный сервер.

Однако формат травления зависит от определений классов моделей, которые могут измениться с одной версии scikit-learn на другую.

Я бы порекомендовал написать свою собственную модель сохранения на основе реализации, если вы планируете долгое время удерживать модель и позволить ее загрузить в будущих версиях scikit-learn.

Я бы также рекомендовал использовать формат файла HDF5 (например, используемый в PyTables) или другие системы баз данных, которые имеют определенную поддержку для эффективного хранения числовых массивов.

Также обратите внимание на внутренние структуры CSR и COO для разреженного матричного представления scipy.sparse, чтобы создать эффективный способ хранения данных в базе данных.

Смежные вопросы