Юпитер в римской мифологии - царь богов и бог неба и грома.

Если вы наткнулись на мою серию блогов, вот краткая информация о моем ведении блога. Я глубоко погружаюсь в важные алгоритмы машинного обучения. Завершив обзор машинного обучения, я начал с линейной регрессии. А теперь, прежде чем двигаться дальше, я хочу сделать небольшой перерыв и обсудить инструменты, которые каждый день использует инженер по машинному обучению. Фактически, я бы специально говорил о самом важном инструменте, который ему / ей понадобится в их повседневной работе: Jupyter Notebook. Если вы хотя бы какое-то время интересовались машинным обучением, то я уверен, что вы слышали об этом инструменте и активно его использовали. Я надеюсь, что благодаря этому посту я смогу пролить свет на некоторые интересные способы использования записных книжек jupyter, чтобы вывести свой анализ на новый уровень.

История

Но сначала давайте посмотрим на происхождение этого замечательного программного обеспечения. В области науки о данных, а также в более широком научном сообществе, анализ, к которому прибегали, был в основном исследовательским. Важен не только результат, но также важны методология и способ его создания. Раньше было трудно разделить образ мышления, следовательно, всегда существовала потребность в таком инструменте, который облегчил бы это. Таким образом, IPython Notebook был разработан в 2011 году группой исследователей под руководством Фернандо Перес и Брайан Грейнджер. Тогда он назывался IPython, потому что ядро ​​могло выполнять только код Python. В 2014 году Project Jupyter стартовал как спин-офф проекта IPython. В новых ноутбуках ядра были отделены от внешнего интерфейса, и была добавлена ​​поддержка других языков, кроме Python.

Кстати, Jupyter - это аббревиатура от Julia, Python и R, означающая, что создатели проекта хотят охватить все небо машинного обучения под своим зонтом и предоставить всем своим пользователям силу молнии и вспышки . :)

Контроль версий

Как только вы начнете поддерживать записные книжки jupyter для воспроизводимых результатов, важно иметь эффективный механизм хранения. Github - отличная платформа для хранения и просмотра записных книжек, поскольку он отображает записную книжку, когда вы открываете соответствующую ссылку на файл в любом веб-браузере. Однако есть два предостережения. Во-первых, если у вас в записной книжке много JavaScript, они не отображаются в Github. Затем вам нужно будет увидеть их на своем локальном компьютере. Помимо этого, иногда трудно увидеть различия в коде, и, следовательно, изменения в предыдущем коде довольно трудно увидеть из-за файловой структуры файлов ipynb.

Решение состоит в том, чтобы сохранять файлы Python с помощью записной книжки jupyter, чтобы также можно было легко отслеживать различия в коде. Это можно сделать, отредактировав файл конфигурации:

~/.ipython/profile_nbserver/ipython_notebook_config.py 

Это позволит сохранить файлы .py и .html с каждой сохраненной записной книжкой. Тогда различия в коде можно будет легко показать в консоли.

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

Два вида записных книжек

Поскольку записные книжки jupyter можно использовать в качестве исследовательского инструмента, а также окончательного документа, который может быть доставлен и показан заказчику, аналитическим группам настоятельно рекомендуется иметь два типа папок для конкретного случая использования. Один может быть назван develop, где может быть проведен исследовательский анализ, а другой может быть назван deliver для размещения заключительных блокнотов. Таким образом, у вас будет следующая структура папок.

- develop
  - <date>-<name>-<use case>
    + analysis1.ipynb
    + analysis1.py
    + somefig.png
- deliver
  - <use case>
    + final_analysis.ipynb
    + final_analysis.py
    + fig1.png

Магия

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

  • Первый - с помощью magic bash. Команды Bash позволяют легко просматривать файлы в текущем каталоге, а также загружать файлы и другие простые команды bash, не выходя из браузера. Вы также можете показать состояние каталога, в который вы, вероятно, загружаете какой-либо файл, и хотели бы показать, что файл присутствует в каком-то удаленном каталоге, таком как s3, и вам нужно будет загрузить файл.
  • Еще мне нравится показывать математические уравнения. Поскольку мы, специалисты по обработке данных, работаем с множеством алгоритмов, нам необходимо сформулировать алгоритмы, которые мы используем для других инженеров, с которыми мы работаем. Следовательно, магия %% latex действительно помогает нам в этом.

Структурирование записной книжки Jupyter

Вначале должен быть импорт и зависимости. Для Python импорт должен быть упорядочен обычным способом PEP8. т.е.

  1. стандартные библиотеки
  2. связанный сторонний импорт
  3. локальное приложение / библиотека / импорт модуля

Затем следует указать информацию о версии, по крайней мере, для основных зависимостей, таких как numpy, scipy, pandas и т. Д.

Когда вы дойдете до конца записной книжки, вам следует подумать о двух вещах.

  • Мой ноутбук слишком большой? Если он слишком большой, то, вероятно, читателю будет непонятно, в чем заключается общая картина. Следовательно, возможно, вам стоит подумать о том, чтобы разбить блокнот на отдельные блокноты. Для этого вы можете воспользоваться функцией FileLinks.
  • Блокноты Jupyter предназначены для рассказов о данных и, следовательно, должны иметь заключение, в котором резюмируются основные моменты и то, что обсуждалось.

Отладка

Если код, который вы пытаетесь отлаживать, относится к сфере чистого Python, тогда вы можете использовать старые инструменты отладки Python pdb. Команды и методы pdb также работают в записной книжке jupyter.

По моему опыту pdb должен очень помочь вам при отладке ваших моделей. Это основано на предположении, что вы создаете свои модели на Python. Если вы создаете свои модели на каком-то другом языке, вам нужно будет использовать инструменты отладки для соответствующего языка, но я предполагаю, что jupyter будет работать таким же образом, если язык является интерпретируемым, например R, Julia и т. д. Если вы обнаружите какие-то другие ошибки, которые больше похожи на странные проблемы с матрицами, то, вероятно, форма данных, которые вы передаете, неправильная, и вам нужно внимательнее присмотреться к тому, как вы строите свои матрицы.

Профилирование

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

  • %%time сообщит вам количество времени, необходимое для запуска ячейки.
  • Вы также можете использовать профилировщик линий или посмотреть, сколько памяти занимают ячейки. Для этого вам нужно будет установить line_profiler и memory_profiler в зависимости от ваших требований. Затем вы можете загрузить расширения.

Это некоторые из распространенных способов использования записных книжек Jupyter и практик, которые я использую. Если вы найдете этот пост полезным, нажмите кнопку хлопков. Также подписывайтесь на меня на @ alt227Joydeep, чтобы увидеть больше моих статей. Вы также можете написать мне в Твиттере, если хотите что-то обсудить, и я буду более чем счастлив помочь.

Использованная литература: