#python #r #sparse-matrix
#python #r #sparse-matrix
Вопрос:
Я работаю с большими разреженными матрицами (матрицами элементов документа, сгенерированными из текста) в python. Для их обработки требуется довольно много времени и памяти, и я полагаю, что разреженные матрицы могли бы предложить некоторые улучшения. Но я обеспокоен тем, что использование библиотеки разреженных матриц затруднит подключение к другим модулям python (и R, через rpy2).
Могут ли люди, которые уже пересекли этот мост, дать какой-нибудь совет? Каковы плюсы и минусы использования разреженных матриц в python / R с точки зрения производительности, масштабируемости и совместимости?
Ответ №1:
Использование разреженных матриц в Python само по себе может быть не очень хорошей идеей. Вы проверяли разреженные матрицы в numpy / scipy?
Numpy приносит огромное преимущество использования в основном C-кода для повышения производительности в Python.
Исходя из моего ограниченного опыта обработки текста в R, производительность делает его практически непригодным для чего-либо, кроме исследовательского анализа данных.
В любом случае, вам не следует использовать ванильные списки для разреженных матриц, это (по понятным причинам) займет некоторое время, чтобы разобраться с ними.
Комментарии:
1. Я видел эту документацию, но мне трудно разобраться в последствиях. Совместимы ли другие библиотеки с классом sparse matrix? Какого увеличения скорости / памяти я могу ожидать?
Ответ №2:
Существует несколько способов представления разреженных матриц (в документации к пакету R SparseM сообщается о 20 различных способах хранения разреженных матричных данных), поэтому о полной совместимости со всеми решениями, вероятно, не может быть и речи. Числовые параметры также предполагают, что наилучшего решения во всех ситуациях не существует.
Выберите либо разреженные матрицы numpy, либо R’s SparseM (через rpy2) в зависимости от того, где находятся ваши процедуры обработки больших чисел для этих матриц (numpy или R).