С чего начать работу с ML и DL. Обзор лучших библиотек

В январе вышла моя статья про типы машинного обучения и способы их применения для повседневных задач. Спасибо всем за фидбэк и комментарии: особенно часто меня спрашивали о том, как все описанные методы и алгоритмы можно «пощупать» и воплотить. В этой статье я подскажу способы.

Сегодня существует огромное количество библиотек для машинного и глубокого обучения. Чтобы облегчить задачу выбора для новичков, мы рассмотрим только самые популярные и необходимые библиотеки, которые покрывают все базовые потребности для начала работы с ML и DL.

Язык программирования: Python или R?

Язык R создавался для решения задач статистики и очень популярен среди дата-аналитиков. Его основная проблема — он плохо подходит для решения задач, не связанных с анализом и визуализацией данных.
В свою очередь Python — язык общего назначения и может быть успешно применен для решения различных задач.

Именно поэтому в последние пару лет Python набрал огромную популярность и стал lingua franca в сообществе машинного обучения. Практически любая современная ML или DL библиотека предоставляет Python API.

Поэтому сейчас задача выбора сильно упростилась: используйте Python и не ошибетесь.

Сам язык очень простой и поэтому легок в изучении. Тем более, что для применения в машинном обучении не нужно знать все его тонкости.

Jupyter Notebook: работа с данными, кодом и графиками

Если в традиционном программировании большую часть времени вы проводите в текстовых редакторах или IDE-шках, то в Data Science большая часть кода пишется в Jupyter Notebook.

Это простой и мощный инструмент для анализа данных. Он позволяет писать код на Python, R и других языках, добавлять текстовые описания в Markdown, встраивать графики и диаграммы непосредственно в интерактивную веб-страницу.

Плюс ко всему, Google выпустил бесплатный сервис Google Colab, который предоставляет облачную версию Jupyter Notebook и дает возможность производить вычисления на CPU и GPU. Все нужные питоновские ML библиотеки уже установлены, так что можно начинать сразу там, если лень устанавливать все локально.

Scikit-learn: лучшая библиотека для классических ML алгоритмов

Scikit-learn — одна из самых популярных ML библиотек на сегодня. Она поддерживает большинство алгоритмов обучения, как с учителем, так и без: линейная и логистическая регрессия, метод опорных векторов (SVM), Naive Bayes классификатор, градиентный бустинг, кластеризация, KNN, k-средние и многие другие.

Кроме этого, Scikit-learn содержит множество полезных утилит для подготовки данных и анализа результатов. Эта библиотека в основном предназначена для классических алгоритмов машинного обучения, поэтому её функционал для нейронных сетей очень ограничен, а для задач глубокого обучения она не может быть использована вовсе.

В дополнение к очень качественной документации, Scikit-learn содержит раздел с туториалами, в котором показано, как работать с библиотекой, а также даются базовые знания по машинному обучению.

Pandas: извлечение и подготовка данных

Анализ и подготовка данных зачастую занимает большую часть времени при решении ML задач. Данные могут быть получены в CSV, JSON, Excel или другом структурированном (или не очень) формате, и вам нужно обработать их для того, чтобы использовать в ML моделях.

Для этих целей используется библиотека Pandas. Это мощный инструмент, который позволяет быстро анализировать, модифицировать и подготавливать данные для дальнейшего использования в других ML и DL библиотеках, таких как Scikit-learn, TensorFlow или PyTorch.

В Pandas можно загружать данные из различных источников: SQL баз, CSV, Excel, JSON файлов и других менее популярных форматов.

Когда данные загружены в память, с ними можно выполнять множество различных операций для анализа, трансформации, заполнения отсутствующих значений и очистки набора данных. Pandas позволяет выполнять множество SQL-подобных операций над наборами данных: объединение, группировка, агрегирование и т. п. Также она предоставляет встроенный набор популярных статистических функций для базового анализа.

Jupyter Notebook также поддерживает Pandas и реализует красивую визуализацию его структур данных.

Сайт Pandas содержит очень подробную документацию. Но начать можно с 10-минутного туториала, который показывает все основные фишки и возможности библиотеки.

Библиотека NumPy: многомерные массивы и линейная алгебра

Основной функционал NumPy заключается в поддержке многомерных массивов данных и быстрых алгоритмов линейной алгебры. Именно поэтому NumPy — ключевой компонент Scikit-learn, SciPy и Pandas.

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

Для этого отлично подойдет вводный туториал по Numpy, а также основы NumPy.

Matplotlib и Seaborn: построение графиков и визуализация данных

Matplotlib — это стандартный инструмент в наборе дата-инженера. Он позволяет создавать разнообразные графики и диаграммы для визуализации полученных результатов.

Графики, созданные в Matplotlib, легко интегрируются в Jupyter Notebook. Это дает возможность визуализировать данные и результаты, полученные при обработке моделей.

Для этой библиотеки создано множество дополнительных пакетов. Один из наиболее популярных — это Seaborn. Его основная фишка — готовый набор самых часто используемых статистических диаграмм и графиков.

Традиционно, обе библиотеки имеют раздел с туториалами на их сайтах, но более эффективным подходом будет зарегистрироваться на сайте Kaggle и посмотреть в разделе «Kernels» готовые примеры использования, например, Comprehensive Data Exploration with Python.

Tensorflow и Keras: библиотеки глубокого обучения

Любая библиотека глубокого обучения содержит три ключевых компонента: многомерные массивы (они же тензоры), операторы линейной алгебры и вычисление производных.

В Tensorflow, библиотеке глубокого обучения от Google, отлично реализованы все три компонента. Наряду с CPU, она поддерживает вычисления на GPU и TPU (тензорных процессорах Google).

В настоящее время это самая популярная библиотека глубокого обучения, вследствие чего по ней создано множество туториалов и онлайн-курсов. Но зрелость имеет и обратную сторону — весьма корявый API и более высокий порог входа, по сравнению с той же PyTorch.

Keras — это надстройка над Tensorflow, которая решает множество юзабилити-проблем последней. Ее главная фишка — это возможность строить архитектуру нейронной сети с использованием красивого Python DSL. Для Keras также написано множество обучающих материалов, поэтому разобраться с ней несложно.

PyTorch: альтернативная библиотека глубокого обучения

Пожалуй, PyTorch — это вторая по популярности DL библиотека после Tensorflow, которая создана в Facebook. Ее сильная сторона в том, что она была разработана для Python, и поэтому использует его стандартные идиомы. По сравнению с Tensorflow, здесь порог входа намного ниже, а любую нейронную сеть можно построить с использованием стандартных ООП классов и объектов.

Также ее легче отлаживать, потому что код исполняется как обычный Python код — нет этапа компиляции, как в TensorFlow. Поэтому можно пользоваться даже питоновским отладчиком.

Если сравнивать с Keras, PyTorch — более многословный, но менее магический.

У PyTorch тоже есть своя надстройка — это библиотека fastai. Она позволяет решить большинство стандартных DL задач в пару строчек кода. Но что делает fastai действительно особенной — это их невероятный онлайн-курс Practical Deep Learning for Coders.

На что обратить внимание

Невзирая на очень развитую экосистему, есть явные лидеры, наиболее широко применяемые в мире машинного и глубокого обучения. Делая первые шаги в ML, лучше использовать именно их, поскольку для них созданы подробные туториалы, онлайн-курсы, а также есть активные комьюнити.

Чтобы сделать процесс обучения более гладким, есть смысл начать эксперименты с классических задач ML и сфокусироваться на использовании Scikit-learn и Pandas. И после этого уже двигаться в сторону глубокого обучения.

Если вы задаетесь вопросом, какую DL библиотеку лучше выбрать: TensorFlow/Keras или PyTorch, то лучшим ответом будет найти онлайн-курс, который вам нравится, и курс сделает выбор за вас.

После ознакомления с основными инструментами и хотя бы базового понимания, что они позволяют делать, следующий важный шаг — выбор обучающих материалов. Курсов по ML и DL существует огромное множество и времени пройти все попросту не хватит. Поэтому в следующей статье мы обсудим лучшие, на мой взгляд, варианты по этим темам, а также дальнейшие шаги после их прохождения.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному2
LinkedIn



91 коментар

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.
То, что ML и AI тупо в статье сведены к паре классических методов и некоторым типам нейронок — уже отметили другие комментаторы.

Vasily Nekrasov, cогласен! Но учитывая тему статьи «С чего начать работу с ML и DL. Обзор лучших библиотек» думаю это приемлимо.

Вот что стоит добавить в этой статье, так это обозначить важность глубокого понимания ML/DS/AI, а не просто дать новичкам ориентир на инструменты. (Кстати для заголовка — это вполне ОК).

Один из таких глубоких курсов для новичков — www.coursera.org/learn/machine-learning
Нейронки там затронуты лишь немного, в конце курса. Оcновной язык там MatLab(Octave), а не Python). Но зато пройдя этапы курса, глубоко понимаешь, откуда взялись нейронки и как их «готовить». Что не для всего нейронка самое лучшее решение. И главное, как понимать, что алгоритм обучается, тому что хотим мы.

Автору отдельное спасибо за Google Colab. Теперь не надо будет локально свой Jupyter Notebook поднимать! :)

Вот что стоит добавить в этой статье, так это обозначить важность глубокого понимания ML/DS/AI,

Тут проблема несколько сложнее — глубокое понимание глубокого обучения (каламбур) важно для того, чтоб делать адекватные модели. Весьма очевидно, что вдолгосрок от этого выиграли бы все.
Но! Вкраткосрок в этом не заинтересован никто — вайтишники хотят побыстрее денег, а работодатели не хотят оплачивать исследовательскую часть работы (зачем, если можно просто взять keras и хуяк-хуяк набросать модель в 10 строчек).
А в результате после эйфории-хайпа наступит очередное разочарование-похмелье. И возможно, уже скоро.

Один из таких глубоких курсов для новичков — www.coursera.org/learn/machine-learning

Посмотрел программу — да, хороший базовый курс для undergraduates. Выбор Octave — видимо, личное предпочтение автора, но тут уж хозяин барин, а всем с выбором языка не угодишь.

Кажется, у тебя ошибка — вместо «вкраткосрок» нужно «вдолгосрок» (?)

Ошибки нет, но да — есть неточность: я не отметил явно, что в бизнесе вдолгосрок мало кто думает, особенно если речь идет о чем-то хайповом.

Про Украину даже спрашивать не буду, а ваш Батько дает на науку больших и толстых? Или дает, догоняет и еще раз дает?

Ха-ха, я тебе как-нибудь в личной беседе расскажу об уровне одной дата-сцаентистки из Америки. Понятно, что единичный случай — не статистика, но коли она не киздит, что работала на Эппл и WD ... то это объясняет, почему амазон на следующий день после покупки таблетта предложил мне купить такой же... ну куле, на всех Денисенок не напасешься.

Плевать мне на разных баб. Я про тех, чьими моделями мы тут пользуемся

Ну полегче, дядя Витя, полегче :)
Забыл, что именно баба была первым программистом?
Да и Ингрид Добеши, чьими вельветами я активно пользуюсь — тоже не мужик.

Через 5 лет станет модно что-то другое, опять переназовутся

Это да! А как думаешь, что именно модно станет?

Странно, что обошли вниманием библиотеку ML.NET, которая сейчас очень активно развивается.

Вероятно, потому что пока API — версии 0.10 — выглядит весьма бедно
docs.microsoft.com/...​otnet/api/?view=ml-dotnet
Вот когда (если) активно разовьётся, тогда и будет целесообразно уделить ей внимание.

Да, ML.NET развиваеться. Впервые о нем я услышал в июне 2018. Но скорее это инструмент для .NET разработчиков, чтобы не переходить на другие языки и прикручивать ML в существующий .NET софт, нежели лидер в ML.
Пока еще ML.NET не догнал все разнообразие инструментов, которое существует для Python.

Отличная статья, большое спасибо автору!
В свое время, приходилось искать этот путь методом проб и ошибок:
1) сразу выбрал не тот язык программирования, с которым сложно было писать что-то практичное
2) пошел в сферы и инструменты, от которой в итоге не было пользы
3) поздно узнал про Jupyter Notebook
Автор предлагает отличную дорожную карту, рекомендую ее к использованию

Работу с ML и DL следовало БЫ начать с понимания того, как эти методы работают и что они (НЕ)могут.
Но это нерыночно — ибо мешает и манагерам, ведущимся на хайп, и вайти-в-вайтишникам, эмэльщикам, не желающим тратить несколько лет на понимание фундамента.
В результате говномодели дадут говнорезультаты и опять наступит зима ИИ, как уже бывало не раз. Когда оно будет, сказать сложно, но с учетом того, что МЛ хайп длится уже несколько лет, простейшая статистика говорит, что ему недолго осталось.

1) ИИ нет и врядли в ближайшее время будет. Умножение матриц это не ИИ.
2) Заката МЛ не будет, так как это следующий шаг в разработке софта. Проще говоря автоматизация.
3) МЛ это и есть статистика) А посему утверждение что статистика говорит что статистика умрет довольно странно)

1) Не вдаваясь в филосовские споры о том, что такое «И» вообще и «ИИ» в частности, можно, тем не менее заметить следующее:
— поскольку большинство «специалистов» по МЛ — еще те грамотеи, то амазон, после покупки на нем таблета, на следующий день присылает мне предложение купить такой же(!) таблет. А в ПэйПэле борьба с fraud сводится к тупому подбиранию «оптимального» кол-ва слоев в нейронке. При этом никакого бенчмаркинга с простейшими моделями типа логарифмической регрессии не проводится.
Но есть и другие примеры — та же эвристика того же каспера умела задолго до ИИ хайпа обнаруживать новые, еще неизвестные вирусы.

2) Или другой вариант — наймут кучу вайти-вайтишников — результат будет примерно такой же как писать софт «автоматизатором», а обойтись может и дешевле.

3) Вот интересно проверить — разобрала бы тренированная сетка, что подлежащее в моем предложении, это «МЛ хайп» (а не «МЛ»), к которому и относится сказуемое «умрет». Ну а история зим ИИ — известна. ru.wikipedia.org/...​искусственного_интеллекта
Известно и сколько, в среднем, длится (любой) хайп.

Ну и сам же знаешь, что суть той же нейронки — это построить некие разделяющие гиперповерхности и ничего более.

Ну, не все так просто, архитектуры нейронок-то разные, разные и задачи. Но меня да, напрягает, что почти никого и не иппет то, КАК и ПОЧЕМУ эти сетки работают. Поначалу это было оправдано — и сам матан сначала двигался вперед невзирая на противоречия, но развитие бы остановилось, если бы Коши не навел порядок в теории.

Вот в этой статье Mallat попытался объяснить работу сверточных сетей через те же вейвелеты. Общая идея мне понятна, функционально-аналитические нюансы — более-менее, в алгебраических соображениях начинаю плавать.
www.di.ens.fr/...​ers/RSTA2015Published.pdf

Пожалуйста. Аналитическую часть с вельветами я понял так:
1. И вельветы, и фильтры сверточной сети умеют эффективно понижать размерность данных, отбрасывая незначительные коэффициенты.
2. и вельветы, и фильтры — суть nested (каскадны), поэтому можно попытаться свести одно к другому.
Фактически речь идет о проекции в пространство меньшей размерности, причем сжимающими операторами.

А вот там где алгебраические аргументы в ход идут — вот там я уже плаваю. Хелемский, написавший, пожалуй, первый радикально обновленный учебник по функциональному анализу после Колмогорова и Фомина (www.twirpx.com/file/111940) подчеркивает важность алгебраических методов в анализе, но увы — бытовуха не позволяет мне погрузиться в их изучение.

но вейвлеты и фурье всего-лишь, например, переводят сигнал и временной области в частотную и никак не снижают размерность

Снижают, если отбросить коэффициенты ниже некого порога. Понятно, что это сжатие с потерями, но несущественными.

Ортогональных систем функций бесконечно много.

Так нам нужны не всякие, а «хорошие». Фурье инвариантно к циклическому сдвигу (вельветы — нет, поэтому придумали избыточное преобразование MODWT). Зато вельветы — это не просто ортогональный базис, а еще вложенные друг в друга гильбертовы пространства.

Но с этим проще бороться в частотной, а не временной или пространственных областях

Только если процесс — стационарный :).
А вот если — как например в газе — прорвало трубу и цены взлетели — то фурье этот пик размажет по всей временнОй области, вельветы же локализуют его и по частоте, и во времени.

Впрочем, мы уходим в сторону. Тут более релевантно другое свойство вельветов — посмотри последовательность картинок, восстановленных из вельветных базисов различной глубины. А потом сравни с послойной визуализацией того, что «видят» сверточные сетки в каждом слое. Ввглядит весьма похоже.

Нейронки я не знаю пока на серьезном уровне

Так пока что их никто на серьезном уровне не знает, ПОЧЕМУ они (на ряде задач) эффективно работают.
Mallat пытается свести все к вельветам, потому что он сам — известный вельветчик. Но мне каат-ся, что это — не натягивание совы на глобус, а правильный подход для сверточных сетей.

Ну и вот те наглядные картинки, о которых я говорил:
1. Лена через призму вельветов
www.researchgate.net/...​e-Daubechies_fig3_1957226
2. Лена через призму слоев сверточной сети
www.semanticscholar.org/...​8152cde30bcf74b861eb6a536
3. В качестве бонуса и чтоб другим было нескучно читать нашу дискуссию — голая Лена — оригинальный необрезанный имидж
www.lenna.org/full/len_full.html

Чет я как то очень уж сомневаюсь что в Амазоне работают слабые специалисты. Понятно что там работают специалиты и без phd по математики, но все же .

А я открою секрет полишинеля: если над хорошим спецом поставить тупого манагера, который будет нахлестывать с криками быстрей-быстрей, то и результат будет соотвествующий. И это — всего лишь один из многих способов не дать таланту принести плоды (хотя, пожалуй, самый распространенный).
Ну а какие специалистки работают в амазоне — мы знаем — умницы и красавицы :)
dou.ua/...​s/17-years-old-architect

решили в облака полезть — кто-то умный у них в верхушке оказался

Повезло :)
Я когда слышу притчи недоБаффетов, что мол, вот если бы вы инвестировали в Амазон... — только посмеиваюсь — я-то помню, сколько лет он в убытках сидел, а задним числом все Баффеты.

Простой пример. Вот GPT модель языка blog.openai.com/better-language-models
Которой просто скармливают кучу текстов и она сама находит все правила и закономерности языка.
Сделаете это быстрее руками?) — врядли.

Я текстпроцессингом интересуюсь постольку-поскольку, поэтому мне сложно судить.
А вот о той области где я эксперт — анализ временнЫх рядов и стохастических процессов — рассказать могу много. Какой инструмент возьмет дата сцаентиест «от сохи», услышав слово time series? Скорее всего, LSTM сеть.
А что из этого может (не) получиться — этот case я на Доу уже неоднократно приводил letyourmoneygrow.com/...​r-a-step-by-step-example

Рекомендую сразу подписаться на канал телеграм по МЛ t.me/ml_world
Там много полезных пейперов новостей и прочего

Раз такое дело, то тоже порекомендую хороший канал: t.me/d_science

Спасибо, ждем такую же статью только для аналитиков. Например
«С чего начать работу с Java. Обзор лучших библиотек»
....
Если в Data Science большую часть времени вы проводите в Jupyter Notebook, то в большая часть кода в програмировании пишется в так называемых IDE....
.... Выбор языка Java, Scala, Kotlin, Groovy — какой выбрать?...
... Spring — лучшая библиотека для бизнес-приложений..
Ну вообщем что то в таком духе, или блин, «стрелочка не поворачивается» ?

Что за треш? Вы модели на ассемблере пишите?) и какие же у питона проблемы на проде?)

Вы хоть что-то на прод с пайтоном деплоии?

Не знаю что там у вас, но обычно это происходит довольно непринуждённо.

tensorflow наверное самый убогий движок для нейронок, но он и самый простой для вайтишников и по нему много уроков для новичков в инете.

Это почему же он убогий?

Сборка tf то еще занятие, тут я согласен. Но обычно его и не нужно постоянно собирать, так как это делают с кафе, и не нужно что-то менять в середине так как это делают с кафе. Он довольно гибок(PyTorch еще более гибок). А это для ресьорча очень важно.

По поводу GPU, он по дефолту отжирает все. тому да, приходиться юзать CUDA_VISIBLE_DEVICES и alow_grown_placement.

R и R Shiny — это идеальные инструменты для исследования и создания прототипов приложений.

Для разработки «production-ready» приложений, можно использовать (например):

01. web сервер R Shiny и связанные с ним пакеты (shiny.rstudio.com);
02. пакеты «tidyverse» и «data.table» (высокопроизводительные вычисления);
03. пакет «ggplot2» и различные внешние JS библиотеки для визуализации;
04. пакет «bookdown» для создания технической документации проекта;
05. пакет «doParallel» для выполнения параллельных вычислений;
06. пакет «caret» (подробнее в книге «Applied Predictive Modeling in R»);
07. пакет «forecast» для работы с временными рядами (otexts.com/fpp2);
08. пакеты «keras» и «tensorflow» для глубокого машинного обучения;
09. пакет «R6» для реализации кода в парадигме объектно-ориентированного программирования;
10. пакет «testthat» для создания unit тестов.

Учитывая, что «большую часть времени» аналитики проводят в «Jupyter Notebook», хотелось бы обратить внимание на «R Notebook», который очень комфортный для проведения исследовательской работы и позволяет работать с кодом на Python, SQL, C++, Bash.

Общепринятой IDE для R является R Studio, которая существует в desktop и браузерной версиях.
При этом работа в R Studio на локальном компьютере и через браузер выполняется в едином интерфейсе, что весьма полезно при удаленной работе с R кодом на AWS сервере.

Мнение, что «R плохо подходит для решения задач, не связанных с анализом и визуализацией данных» обычно связано с тем, что код на R пишут не-программисты и он получается трудночитаемым и поддерживаемым. Код на Python легче поддерживать на этапе использования готового продукта. Кроме того, специалистов на Python обычно легче найти на рынке.

Считаю, что одним из основных достоинств R + R Shiny является отличное соотношение «скорость vs стоимость» прототипирования MVP vs MSP приложений.

R вообще не рекомендую, тупо урезанный пайтон без будущего, с просто пипец ужа ным синтиаксисом который тупо нереально быстро читать

R вообще не рекомендую, тупо урезанный пайтон без будущего

Не люблю кошек, потому что не умею их готовить.

который тупо нереально быстро читать

Броцкого не читал, но осуждаю.

То, что ML и AI тупо в статье сведены к паре классических методов и некоторым типам нейронок — уже отметили другие комментаторы.
Но вот бывают-таки и сложные модели, где это не так.
К примеру, мне часто нужны:
1. вейвлеты (в т.ч. для спектрального анализа квази-стационарых временных рядов)
2. нормальная библиотека стохастических процессов — а не только примитивное броуновское движение
3. «экзотические» вероятностные распределения типа EV или VarianceGamma.
Где все это в питоне?

В питоне как и в любом норм языке это в либах)
открываете гугли и пишете то что вам надо и юзаете
Пример:
www.google.com/...​&sourceid=chrome&ie=UTF-8

Угу, гуглим и находим какие-то заброшенные поделки

www.google.com/...​i30j0i8i13i30.w7qKjAFgpKM

www.google.com/...​7i30j0i8i7i30.jaqgOrJRN6c

А вы думает в формуле что то изменилось?)

Я уже молчу о том что эти вещи довольно просты в реализации + довольно слабо полезны

А вы думает в формуле что то изменилось?)

Смотря о чем речь — если о генерации случайных сэмплов из EV или VarianceGamma — то там действительно все straightforward, но уже калибровка параметров EV — процесс очень нетривиальный.

эти вещи довольно просты в реализации

Ну да, очень просто переписать формулу в лоб, сложно получить что-то стОящее. Не даром вот этот тип (сейчас — профессор в ТУ-Мюнхен) в своей диссертации грамотной симуляции jump diffusion процессов уделил отдельный параграф.
oparu.uni-ulm.de/...​df?sequence=1&isAllowed=y

+ довольно слабо полезны

Это смотря в чьих руках :) Несколько лет назад я с помощью (производного от) VarianceGamma построил модель динамики спотовой цены природного газа, которая почти идеально соответствует эмпирике, как показывает вот этот QQplot.
yetanotherquant.com/fig5b.pdf
А сейчас использую EVT для стресс-теста в рамках требований Basel III — свод нормативов по риск-менеджменту для банков.

В анализе временнЫх рядов — первое (стационарные ряды уже мало кому интересны). Более того, в R — не просто преобразование, а уже готовый фреймворк для оценки (медленно) меняющегося спектра. Я бы конечно мог и сам запрограммить вот эту теорию — letyourmoneygrow.com/...​/2018/01/report_final.pdf — но куда удобнее брать готовое от автора, особливо если не уверен наперед в том, будет ли оно работать на практике.

Почему-то мне кажется, что либы для R отлажены качественнее, чем для питона.

А потому что:
1. «Классику» имплементировали в R куда раньше чем в Питоне
2. Лично мой опыт говорит, что авторы новых оригинальных разработок — такие как Nason или Fryzlewitz, иплементировали свои идеи в R. Собственно, Питоном до хайпа нейронок в академической среде вообще мало кто интересовался.

1. Рекомендовать R или нет вопрос личной оценки.
2. R != Python. Но у них есть общее «под капотом» — C++.
3. Будущее R более чем прекрасно и серьезно (www.rstudio.com/pricing)
4. Синтаксис R имеет «особенности», связанные со статистической мощью языка.
5. Хорошо документированный R код читается легче C++ кода.

1. Да. А еще вопрос задачи. Лично я стараюсь не влюбляться ни в какую технологию, а использовать то, что подходит для решения задачи. При этом склеивать фрагментарное решение написанное на разных языках — порой еще тот челленж. Но тут опять-таки решаешь индивидуально, стоит ли овчинка выделки (обычно стоит, бо контейнеры-микросервисы в помощь).

2. Ну, C/C++ считай везде под капотом, это то общее, что есть не только у R и Питона, но и Линукса и PHP.

3. Да. Более того, за R (полугласно) стоит Microsoft. Вся майкросовтовская аналитика делается сначала на R, а потом на Питоне. Более того, насколько могу судить в своей области, программный код к научным статьям чаще всего пишется именно на R.

4. Тут я должен признать, что в «особенности» кода в R вызваны больше отсутствием кодекса кодера (вот такая игра слов). Каждый делает, как хочет. В Питоне с этим строже — и это хорошо.

5. А можно развить мысль?
В плюсах читать уже проще из-за статической типизации (что, правда, в последнее время портится злом по имени auto).

В R есть рекомендации по стилю кода.
Например:
1. Style guide — adv-r.had.co.nz/Style.html
2. Google’s R Style Guide — google.github.io/styleguide/Rguide.xml
3. The tidyverse style guide — style.tidyverse.org

Ты в финансах

Ну, не только, как минимум, еще и в энергетике. Хотя там да — матлаб, пожалуй, даже чаще чем R используется.

1) это вопрос не личной оценки, а финансовых, хайринговых, сапортских вопросов.
R не выгоден по многим аспектам.
2) R != Python разумеется но R in Python)
3) У него нет будущего кроме как в группах какихто староверов или хз кого. А отсутствие массовости делает продукт не жизнеспособным априори.
4) Синтаксис никогда не связан с особенностями и не более чем кривые руки разработчиков. я бы еще поняли синтаксис если бы он был сделан в сторону скорости обработки, но это не так. А следователньо его состояние ничем необосновано и бесполезно.
5)

Хорошо документированный R код читается легче C++ кода.

Хорошо документированный R код читается легче хренового C++ кода? Ну тут вопервых нормальный сишный код сегда норм читается и никогда не вызывает проблем с быстрым пониманием. А во вторых мы вроде сравниваем R и Python)

RE:

У него нет будущего кроме как в группах какихто староверов или хз кого

Абсолютно странное заявление, у которого точно нет будущего, в отличие от R.

расскажите еще о великом будущем Lisp’a))

PYPL — R in Top10 (7)
TIOBE — R in Top15 (15)
Отличный результат для в общем-то специализированного языка.

Ну а писать серваки на R это всеравно что писать МЛ на Groovy. Что лишь подтверждает печальность языка.

Спасибо за статью. Какраз лично мне очень актуально. Google Colab — прямо таки находка!

Я не знаю что такое R, а значит

используйте Python и не ошибетесь

это был сарказм)
я знаю что такое R

Типа язык для статистики, но проблема в том что все тоже есть в питоне) а посему его использование вызывает вопросы

В R почти 14000 библиотек, которые покрывают очень широкий спектр задач. Поэтому я бы так лихо не сказал, что

все тоже есть в питоне

я все библиотеки в R не знаю) как собсно и в любом языке)
Но я еще не видел кода на R который бы просто не переводился в Python.
На том же Kaggle, R юзается крайне редко.

Просто суть в том что на Питоне можно решить любую задачу а на R нет. Следовательно он более оптимален для изучения.

Если бы R решал задачи по типу кнопки «сделать пиздато» то вопросов не было бы.. но это тот же кодинг что и на другом языке. А при его узкой специфике и доволньо малом отличии вопрос «зачем плодить зоопарк?»

Рекомендую к изучению „The Impressive Growth of R”
stackoverflow.blog/...​0/10/impressive-growth-r

приведи пример задачи, которую можно решить на питоне и нельзя на R?

Підписатись на коментарі