Numpy для пользователя R?

давние пользователи R и Python здесь. Я использую R для ежедневного анализа данных и Python для задач, более сложных для обработки текста и сценариев оболочки. Я работаю со все большими наборами данных, и эти файлы часто находятся в двоичных или текстовых файлах, когда я их получаю. Обычно я использую статистические / машинные алгоритмы и в большинстве случаев создаю статистическую графику. Я иногда использую R с SQLite и пишу C для задач, требующих больших итераций; прежде чем заглядывать в Hadoop, я собираюсь потратить некоторое время на NumPy / Scipy, потому что мы слышали, что у него лучше управление памятью [и переход на Numpy / Scipy для одного с моим прошлым кажется не таким уж большим] - мне интересно, есть ли у кого-то опыт использования этих двух программ и можно ли прокомментировать улучшения в этой области, и есть ли идиомы в Numpy, которые занимаются этим вопросом. (Я также знаю о Rpy2, но мне интересно, сможет ли Numpy / Scipy удовлетворить большинство моих потребностей). Спасибо -

9
задан Saullo G. P. Castro 12 May 2013 в 21:42
поделиться

3 ответа

Сильной стороной R при поиске среды для машинного обучения и статистики, безусловно, является разнообразие его библиотек. Насколько мне известно, SciPy + SciKits не может заменить CRAN.

Что касается использования памяти, R использует парадигму передачи по значению, в то время как Python использует передачу по ссылке. Передача по значению может привести к более «интуитивному» коду, передача по ссылке может помочь оптимизировать использование памяти. Numpy также позволяет иметь "просмотры" массивов (разновидность подмассивов без копирования).

Что касается скорости, чистый Python быстрее, чем чистый R, для доступа к отдельным элементам в массиве, но это преимущество исчезает при работе с множеством массивов ( тест ). К счастью, Cython позволяет легко добиться серьезных улучшений скорости.

Если я работаю с большими данными, я считаю, что поддержка массивов на основе хранилища лучше с Python (HDF5).

Я не уверен, что вам следует отказываться от одного для другого, но rpy2 может помочь вам изучить ваши варианты возможного перехода (массивы можно перемещать между R и Numpy без создания копии).

11
ответ дан 4 December 2019 в 08:49
поделиться

Я использую NumPy каждый день и R почти так же.

Для обработки большого количества чисел я предпочитаю NumPy R с большим отрывом (включая пакеты R, такие как «Matrix»). медленно в любом случае). Например, функция вещания NumPy, я не думаю, что имеет аналог в R.

Например, чтобы прочитать набор данных из CSV-файла и «нормализовать» его для ввода в алгоритм ML (например, -масштабировать каждое измерение) требует только этого:

data = NP.loadtxt(data1, delimiter=",")    # 'data' is a NumPy array
data -= NP.mean(data, axis=0)
data /= NP.max(data, axis=0)

Кроме того, я обнаружил, что при кодировании алгоритмов ML мне нужны структуры данных, с которыми я могу работать поэлементно и которые также понимают линейную алгебру (например, умножение матриц, транспонирование и т. д. ). NumPy понимает это и позволяет легко создавать эти гибридные структуры (без перегрузки операторов, подклассов и т. д.).

Вы не будете разочарованы NumPy/SciPy, скорее всего, вы будете поражены.

Итак, несколько рекомендаций — в целом и в частности, учитывая факты в вашем вопросе:

  • установите и NumPy, и Scipy. В качестве приблизительного руководства NumPy предоставляет основные структуры данных (в частности ndarray) и SciPy (который на самом деле в несколько раз больше, чем NumPy) предоставляет специфичные для домена функции (например, статистика, сигнал обработка, интеграция).

  • установить версии репозитория, особенно с NumPy, т.к. версия для разработчиков 2.0. Matplotlib и NumPy тесно интегрированы, вы, конечно, можете использовать один без другого, но оба являются лучшими в своем классе среди библиотек Python.Вы можете получить все три через easy_install, что, я полагаю, вы уже сделали.

  • NumPy/SciPy имеют несколько модулей специально направленный на Машину Обучение/Статистика, включая пакет Кластеризация и пакет Статистика.

  • А также посылки, направленные общие вычисления, но которые делать кодирование алгоритмов ML много быстрее, в частности, Оптимизация и Линейная алгебра.

  • Существуют также SciKits, не, включенные в базу NumPy или библиотеки SciPy; вам нужно установить их отдельно. Вообще говоря, каждый SciKit представляет собой набор удобных оберток для упростить кодирование в заданной области. SciKits, которые вы, вероятно, сочтете наиболее подходящими: ann (приблизительный ближайший сосед) и learn (набор алгоритмов регрессии и классификации ML/Statistics, например, Logistic Regression, Multi -слойный персептрон, метод опорных векторов).

11
ответ дан 4 December 2019 в 08:49
поделиться

Я не могу комментировать R, но вот пара ссылок на Numpy/Scipy и ML:

И книга (я просмотрел только некоторые из ее код): Marsland, Machine Learning (with numpy), 2009 г. 406p isbn 1420067184

Если бы вы могли собрать несколько заметок о своем опыте на кривой обучения Numpy/Scipy, что может быть полезно другим.

2
ответ дан 4 December 2019 в 08:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: