Стек технологий Data Science, который я использую в работе.
LasttraderОт коллег поступил вопрос. Каким стеком технологий и инструментами я пользуюсь.
Давайте пройдём по нашему Dataflow:
Кликайте на название инструмента, я прикрепил ссылку на документацию.
1. Парсинг данных.
Парсинг - очень важный навык, который поможет вам получить данные там, где другие не смогут, а значит это добавит Вам стоимости на рынке.
- Beautifulsoup - библиотека для извлечения данных. Умеет искать по полному или частичному совпадению.
- Requests - позволяет сделать запрос к ресурсу, получить статус запроса, сообщение об ошибке и т.д.
2. Базы данных
Базы данных это очень легко... Но это не точно:)
- PostgreSQL - бесплатная популярная БД
- dbeaver - ещё один вариант бесплатной БД, но значительно уступает PostgreSQLв возможностях. Как-то я развернул сервер с биржевыми котировками для одного клиента, но столкнулся с тем, что синтаксис SQL неполон и не все команды отрабатывают ( в прочем как и PostgreSQL)
- MongoDB - хорошая БД, которая очень популярна, и подходит для многих целей, синтаксис обращения достаточно понятный.
- Hbase - база данных с колоночным хранением данных и возможностью работы на распределенных вычислительных узлах. Это отличный вариант, когда вы планируете создать озеро данных.
2. Работа с базами данных:
- SQL - Без эскуэля никуда. обращение к базе данных в 99% случаев выполняется с применением SQL
- JSON - это текстовый формат обмена данных, который перекочевал к нам из JavaScript. Легко читается, легко используется, легко создается. (в случае питона - это будет dict)
- XML - размеченные данные. Разметка содержит теги и атрибуты, а также правила. XML используется для хранения и передачи данных.
- psycopg2 - адаптер, который подружит ваш PostgreSQL и python, легок в использовании, удобен в практике. При подключении надо знать адрес сервера. на котором установлена БД, а также логин с паролем от учетной записи.
- Pyspark - когда у вас не будет хватать памяти, вспомните, что есть pyspark, который поддерживает ленивые вычисления, а это значит, что у вас есть возможность обрабатывать большие датасеты, даже на слабом ноутбуке. Главное научиться создавать спарк сессии. Spark технологии активно используются в HADOOP подобных инфраструктурах.
3. ETL
- Airflow - планировщик, который будет запускать ваш код по расписанию и в определенном, заданном порядке. Лучше устанавливать на ubuntu 20.04 LTS, в изолированой питон среде
- Kafka - брокер доставки информации. Позволит вам "слушать" почти любые источники информации в реальном времени. Данные попадают в соответствующие топики, которые в свою очередь обслуживают консьюмеры. Интересное решение, для real time обработки данных
4. Анализ данных
- Excel - кудаже без него родимого:)
- Pandas - excel функционал для питона и даже больше. Де-факто стандарт для анализа данных на python
- Numpy - когда надо работать с матрицами, тензорами и массивами, numpy вам в этом поможет.
- Matplotlib - популярная, но уже не такая крутая, как раньше библиотека для визуализации, в основном простая графика.
- Seaborn - надстройка над matplotlib, которая позволяет визуализировать статистические взамиосвязи.
- Plotly - круая библиотека с возможностью отрисовки в реальном времени, считаю. что она будет даже поинтереснее чем matplotlib
- Geopandas - представьте, что в pandas можно обрабатывать геопространственные данных... да, такое есть. пользуйтесь ))
5. Препроцессинг
- Sklearn.preprocessing - стандартизация, кодирование, пропуски.
- Pandas - да, pandas подойдет для базовых преобразований над данными
- Numpy - также хорошо применим для препроцессинга
6. Машинное обучение
- Sklearn - отличная библиотека, где можно найти почти все методы машинного обучения.
- Xgboost - бустинговые модели - ансамбли, хорошая библиотека, удобная в использовании
- Catboost - библиотка от Яндекса. Я пользовался ей один раз, но коллеги рассказывают, что это крутая и быстрая библиотека, для работы с градиентным бустингом.
7. Глубокое обучение
- Pytorch - фреймворк от Фейсбука. основной отличительностью является то, что здесь модели нейронных сетей упаковываются в классы, можно достаточно гибкий тюнинг моделей делать.
- Tensorflow -
- Tensorflow.keras - раньше keras бф самостоятельным проектом, который предоставлял удобный API к tensorflow. На мой взгляд именно Keras сделал доступным нейронные сети широкому кругу пользователей.
- Tensorflow dashboard - визуализация графовых вычислений, отображение метрик качества обученных моделей и еще всякие полезные вещи.
8. Сохранение моделей и контроль версионности
- Keras2cpp - может потребоваться, когда продакшн код написан на C++, лего портируется.
-Sklearn-porter - а эта библиотека портирует уже sklearn модели на C и на JAVA
- Tensorflow serving - позволяет сохранть разные версии моделей и работать с ними одновременно. Например, у вас есть нейронка, которая работать с картинками, тогда в зависимости от цветности изображения, данные подаются в разные версии моделей нейронок.
9. Интеграция в production
- Flask - создание приложений. Удобно. Буквально в пару строк.
- Django - самый популярный фреймворк на python для веб приложений.
10. Взаимодействие и API
- Socket.io - для работы с real time данными
- REST - протокол обмена данными
- Fast API - быстрый фреймворк
11. Распределенные вычисления
- Pyspark -
- HDFS - распределенное хранение данных. методы put|get
- GCP - облако Google. Платформа, где можно построить свою инфраструктуру. Арендовать компьютеры, процессоры и еще много много всего.
- AWS - Облако Амазон, лидер в мире. Большое количество сервисов для Вас и для ваших приложений или платформ. Есть много всего настроенного и готового. Обычно пользуются арендой EC2 виртуальных машин.
12. Работа и текстами
- Nltk - библиотека, которая содержит в себе большое количество функционала для работы с естественным языком. Поддерживает много языков.
- Ipavlov- библиотека от наших соотечественников, для решения задач NLP
- Word2vec, seq2vec doc2vec - популярные методы векторного преобразования текстов. В вектор можно преобразовать слово, предложение, документ или целую книгу.
13. Работа и аудио
- Librosa - Когда вы работаете с аудиосигналом, вам потребуется сделать параметризацию и извлечь признаки. Это хорошая библиотека, которая поможет вам при обработе аудио.
14. Работа и видео/изображениями
- Cv2 - библиотека компьютерного зрения и работы с видеопотоком/изображениями.
- Face recognition - очень удобная библотека для поиска лиц на фото/видео, для обучения достаточно иметь всего одно фото человека.
- Tensorflor.keras - Conv2D слои в нейронках показывают отличные результаты при решении задач компьютерного зрения. (model.add(Conv2D...))
15. Работа с временными рядами
- Statmodels - библиотка описательной статистики.
- Arima, Sarima - методы авторегрессии, есть в библиотеке statmodels
- Plotly - отображение графиков временных рядов.