Список инструментов для ученых, разбирающихся в программировании. Базовые инструменты для специалистов по данным.

Введение: что это за статья, а чего нет

Я видел более одного человека с хорошими знаниями в области прикладной математики, который пытался начать работу в качестве «специалиста по данным». На самом деле, я был одним из них, и я могу сказать, что мне бы очень хотелось, чтобы вводные статьи были написаны для людей, которые не являются разработчиками программного обеспечения.

Вот почему я решил написать этот небольшой список для начинающих. Если вы никогда не слышали термин «API», научиться писать что-то, что можно раскрыть в URL-адресе, может быть намного сложнее, чем изучение методов кластеризации или глубоких нейронных сетей.

Эта статья представляет собой общий обзор некоторых основных инструментов разработки программного обеспечения, используемых в промышленности, в частности, при разработке Data Science / Machine Learning. Он предназначен для людей с небольшим знанием программирования (вероятно, не для ученых в области компьютерных наук), но хорошо разбирающихся в математике.

Это не введение в науку о данных или машинное обучение. Я не буду здесь рассказывать об алгоритмах или концепциях машинного обучения.

Что такое Data Scientist? (необязательно до последнего абзаца)

Моя цель - не отвечать на вопрос в заголовке этого подраздела. Просто так получилось, что нам нужно определить, по крайней мере, в рамках этой статьи. Поскольку область науки о данных настолько широка, может возникнуть вопрос что такое наука о данных? легче ответить. Я не буду сейчас вдаваться в подробности. Если вас интересует, каковы разные роли в команде данных, взгляните на эти роли в этом посте Кэсси Козыркова. Это должно дать вам хорошее начальное представление о том, что вы можете найти.

Эта статья будет основана на простом определении понятия «специалист по данным». Поскольку мне известно об отсутствии стандартного определения, я буду придерживаться очень общего представления о профилях вакансий, которые вы можете найти с пометкой «Data Scientist».

Общие инструменты разработки

Python, Jupyter, Git и Anaconda. Вы найдете эти 4 инструмента полезными, даже если вы не планируете работать в промышленности. Они помогут вам организовать вашу работу и держать менее организованные части вашей работы в удобном для использования месте (см. Jupyter для этого). В этой статье будет список этих основных инструментов, небольшой обзор и причины, по которым, я думаю, они вам понравятся.

Python (включая знания о разработке программного обеспечения и некоторые из его бесконечных библиотек)

Излишне говорить, что вы можете потратить все время на изучение Python. На мой взгляд, требуемые знания здесь варьируются в зависимости от того, о каком «специалисте по данным» мы говорим. Инженеру по машинному обучению или разработчику, пытающемуся использовать службу машинного обучения, может потребоваться более глубокое знание Python, чем аналитику данных.

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

Git

Git - это система контроля версий. Это позволяет вам координировать свою работу с вашей командой или поддерживать порядок в собственном коде, управляя различными версиями, которые у вас есть. Если вы обнаружите, что оставляете большие блоки кода с комментариями «только сейчас» или «на всякий случай», возможно, вам понадобится git. Если вы планируете работать в отрасли, это инструмент, который вам нужен.

Начать с Git очень просто. Вы можете просто установить его и начать тянуть, писать и продвигать код как сумасшедший. Проблемы могут возникнуть, если вы захотите отменить что-то, чего делать не следовало, поэтому вам может пригодиться небольшое руководство, если вы никогда не использовали его раньше. Честно говоря, я все время забываю о вариантах, которые использую меньше всего, но у Atlassian есть отличное руководство (которое я до сих пор использую в качестве документации) и очень удобную шпаргалку.

Анаконда (виртуальные среды)

Я напишу об Anaconda, потому что я знаю ее лучше всех, но я думаю, что любой способ создания виртуальных сред (например, virtualenv python) хорош.

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

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

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

Документация Anaconda довольно хороша. И, опять же, вот красивый список команд.

Jupyter (и почему его нет в разделе Python)

Записная книжка Jupyter, как и физическая записная книжка, - отличное место для написания беспорядка. В случае развития науки о данных вам не нужно запускать всю свою программу, загружать данные и снова создавать модели, чтобы попробовать небольшие изменения в функции. После написания, попытки, изменения и полировки вы всегда можете экспортировать очищенный код в файл .py.

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

На вашем месте я бы установил Jupyter с помощью conda, менеджера пакетов для anaconda.

Наконец, некоторые быстрые клавиши

Последние слова

Спасибо за чтение! Я надеюсь, что вы нашли что-то в этом списке полезным, и дайте мне знать, если у вас возникнут какие-либо мысли по поводу этой статьи. Изначально я планировал включить в этот список больше элементов, но статья получилась слишком длинной. Я скоро напишу об этих инструментах.