Python

Я открыл для себя Jupyter Notebooks несколько месяцев назад, когда всерьёз занялся машинным обучением. То, как всё работает в браузере, сначала откровенно восхитило, но розовые очки быстро спали: стало понятно, что в интерфейсе не хватает базовых полезных функций. Тогда я и решил освоить фишки работы с Jupyter Notebooks.

Если вы будете следовать инструкции, приведённой ниже, в вашем Jupyter Notebook появятся следующие функции (к слову, это не предел):

  1. Возможность налету переключаться между несколькими окружениями Conda без перезапуска Jupyter Notebook.
  2. Создание Table of Contents (содержания) в один клик (вы это оцените!).
  3. Невероятно полезный всплывающий Scratch Pad (блокнот, моё любимое!), где вы сможете протестировать код и поэкспериментировать, не меняя ничего в основном теле кода.
  4. Code Folding (Сворачивание блоков кода). Не понимаю, почему эта функция не была введена раньше.
  5. Code Cell hiding (Скрыть код), важная функция, если вы представляете историю данных через визуализацию.. людям куда интереснее графики и диаграммы, а не сам код!
  6. Очень крутой Variable Inspector (Инспектор переменных).
  7. Spellchecker (Проверка орфографии) для маркдаун-ячеек.
  8. Zen Mode, которыйпрячет все лишние отвлекающие опции.
  9. Меню Code Snippets (Фрагменты кода), позволяющее налету добавлять Python-конструкции, например, List comprehensions (Генератор списков).
  10. И, наконец, лучшая из фич —  спокойная красивая полуночная тема для ваших глаз!

Пора прокачаться!

Для начала давайте займёмся настройкой расслабляющей тёмной темы. От долгой работы в программе со светлым фоном глаза сильно устают. Как бы там ни было, перейдя на тёмную сторону, вы уже не сможете вернуться.

Чтобы установить тёмную тему, следуйте следующей инструкции:

# Выключите сервер Jupyter Notebooks и выйдите из него
# Убедитесь, что вы находитесь в базовой среде conda
conda activate base
# установите jupyterthemes
pip install jupyterthemes 
# обновите до последней версии
pip install --upgrade jupyterthemes 

Когда пакет установлен и обновлён, пропишите следующую команду и смело переключайтесь со светлой темы на тёмно-синюю полуночную. Ваши глаза это оценят.

# Включите Dark Mode
jt -t onedork -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T

Теперь давайте посмотрим, сможем ли мы добавить созданные в Anaconda кастомные окружения в качестве ядер в Jupyter Notebooks. Это обеспечит быстрое переключение через меню Kernel без перезапуска среды.

Предположим, вы создали два кастомных окружения в Anaconda: my_NLP и gym. Чтобы добавить их в Jupyter Notebooks, нужно:

# Остановите сервер Jupyter Notebooks и выйдите из него
# Активируйте окружение через терминал 
conda activate my_NLP
# Установите IPython Kernel 
pip install ipykernel
# Привяжите кастомное окружение к Jupyter 
python -m ipykernel install --user --name=my_NLP
 # Повторите шаги выше для второго окружения
conda activate gym
pip install ipykernel 
python -m ipykernel install --user --name=gym 

Теперь откройте Jupyter Notebooks, перейдите в меню Change Kernel и… Бум! Перед вами список ядер, между которыми можно переключаться в один клик.

Вот где появляются новые добавленные ядра. Обратите внимание на приятную темно-синюю тему.

Для настройки остальных фич, нужно будет установить nbextensions для Jupyter Notebooks. Для установки следуйте инструкции:

# Остановите сервер Jupyter Notebooks и выйдите из него 
# Убедитесь, что вы находитесь в базовой среде 
conda activate base
 # Установите nbextensions 
pip install jupyter_contrib_nbextensions
# Установите необходимые JS и CSS файлы 
jupyter contrib nbextension install --system 

Запустите сервер Jupyter Notebooks. Четвертая слева вкладка — Nbextensions. Кликните по ней и увидите полный список функций, которые можно подключить.

Nbextensions

Как вы видите, список обширный, и с первого взгляда в нём не просто разобраться. Кроме того, не все функции одинаково полезны. Вот те, которыми пользуюсь я:

  1. Table of Contents — создает содержание для всего блокнота в один клик, сразу с гиперссылками на разные секции кода.
  2. Scratchpad — мне кажется, это лучшее расширение. Выделяет пространство для экспериментов с частью кода, позволяя абстрагироваться от остального и оставить код в основном блокноте неизменным.
  3. Codefolding — позволяет сворачивать блоки кода.
  4. Hide Input All — прячет весь массив кода, оставляя на виду выходные данные и метки. Полезно, если вы пытаетесь объяснить принцип работы программы человеку, который не разбирается в технических деталях.
  5. Variable Inspector — сократит время отладки, функция похожа на инспектор переменных в Spyder IDE.
  6. Spellchecker — проверка орфографии в маркдаун-ячейках.
  7. Zen Mode.
  8. Snippets Menu — крутые коллекции часто используемых фрагментов кода от list comprehensions до pandas, включая всё, что между ними. Что может быть лучше? Вы можете добавлять и собственные фрагменты.

Выше приведен список функций, которыми пользуюсь я, но не отказывайте себе в том, чтобы опробовать остальные. Из интересных функций, которые я не упомянул: ScrollDown, table_beautifier и Hinterland.

Расширения Snippets и Table of Contents в действии
Scratchpad

Примечания:

  1. Если у вас не установлен Anaconda, попросту игнорируйте команды, включающие в себя «conda». Вы можете пропустить пункты, касающиеся добавления окружений Anaconda в Jupyter Notebooks.
  2. Чтобы установить расширения вам потребуются права администратора.
  3. Если вам не понравилось работать с тёмной темой, введите в терминале команду jt –r , чтобы вернуть обратно светлую тему. Если ничего не изменилось, перезапустите программу и почистите кэш браузера.

Читайте также:


Перевод статьи Pranjal Chaubey: Supercharging Jupyter Notebooks