13.12.2017

Настраиваем Python для машинного обучения

 

Всем привет!

В этой статье я расскажу о новом комфортном способе программировать на Python.

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

Примеры документов, которые вы сможете создавать:

Выглядит классно? Хотите создавать такие же документы? Тогда данная статья для вас!

Сначала необходимо установить пакет Anaconda. Что это такое? Это полностью настроенный Python вместе с предустановленным комплектом самых популярных модулей. Anaconda также включает среду JupyterLab, в которой мы и будем создавать документы с Python кодом.

Если Python у вас уже установлен, то сначала удалите его. Сделать это можно через панель «Программы и компоненты» в «Панели управления».

Скачивание

Перейдите на страницу скачивания Anaconda.

Скачивайте Anaconda для Python 3.6 (Windows 7 и выше) или для Python 2.7 (Windows XP).

Установочный файл весит 500+ MB, так что закачиваться он может достаточно долго.

Установка

Запустите скачанный файл. Откроется окно установщика. На первых двух страницах сразу кликайте «Next». Далее можно выбрать, установить Anaconda только для текущего пользователя компьютера, или для всех.

Важно! В следующем окне нужно указать путь, по которому будет установлена Anaconda. Выбирайте путь, который не содержит папок с пробелами в названии (например, Program Files) и не содержит не английских символов юникода (например, русских букв)!

Игнорирование этих правил может привести к проблемам при работе с разными модулями!

Лично я создал папку Anaconda прямо в корне диска C и указал следующий путь:

На последнем окне будут две галочки. Оставьте все, как есть.

Наконец, начнется установка. Она может занять ~10 минут. Можете спокойно выпить чаю 🙂

Anaconda Navigator

После успешной установки Anaconda запустите программу Anaconda Navigator из меню Пуск. При запуске вы должны увидеть вот этот логотип:

Затем откроется и сам навигатор. Это отправная точка для работы с Anaconda.

В центральной части окна расположены различные программы, которые входят в пакет Anaconda. Часть их них уже установлена.

В основном мы будем пользоваться «jupyterlab»: именно в ней и создаются красивые документы.

В левой части приведены разделы навигатора. По умолчанию открыт раздел «Home». В разделе «Environments» можно включать/отключать/загружать дополнительные модули Python с помощью удобного интерфейса.

JupyterLab

В разделе навигатора «Home» запустите (кнопка «Launch») программу «jupyterlab» (самая первая в списке).

У вас должен открыться браузер по умолчанию со средой JupyterLab в отдельной вкладке.

Слева отображается содержимое папки C:\Users\<ИМЯ_ВАШЕЙ_УЧЕТНОЙ_ЗАПИСИ>.

Справа открыт файл блокнота «untitled.ipynb». Если справа ничего нет, то вы можете создать новый пустой блокнот, нажав на «+» в левом верхнем углу и выбрав «Notebook Python 3»:

Блокнот

Самое время разобраться с тем, что из себя представляют блокноты.

Обычно мы пишем Python код в файлах с расширением .py, а затем интерпретатор Python их выполняет и выводит данные в консоль. Для удобной работы с такими файлами часто используют среды программирования (IDE). К их числу относится и PyCharm, о котором я рассказывал в статье Установка Python и PyCharm.

Но есть и другой подход. Он заключается в создании блокнотов (notebook) с расширением ipynb. Блокноты состоят из большого количества блоков. Есть блоки с простым текстом, а есть блоки с кодом на Python.

Попробуйте ввести в первый блок в блокноте какой-нибудь Python код. Например, я создаю переменную, равную сумме чисел 3 и 2:

На следующей строке мы просто пишем название этой переменной. Зачем? Сейчас увидите.

Теперь нужно выполнить этот блок. Для этого нажмите на значок треугольника  в панели инструментов над блокнотом или комбинацию клавиш Ctrl + Enter:

Под блоком с Python кодом появился еще один блок, который содержит вывод результатов выполнения предыдущего блока. Сейчас вывод содержит число 5. Это число выводит как раз вторая строчка написанного нами блока.

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

Но выводить значения (числа и текст) переменных (пусть и через функцию) можно и в других средах программирования.

Попробуем сделать что-нибудь посложнее. Например, вывести какую-нибудь картинку.

Создайте новый блок с помощью кнопки  в панели инструментов над блокнотом.

В это блоке мы закачиваем логотип Anaconda из сайта Wikimedia и выводим его:

from PIL import Image
import requests

image_url = "https://upload.wikimedia.org/wikipedia/en/c/cd/Anaconda_Logo.png"

im = Image.open(requests.get(image_url, stream=True).raw)
im

Результат будет выглядеть так:

Вот на такое обычные среды разработки не способны. А в JupyterLab — запросто!

Теперь давайте попробуем добавить блок с обычным текстом между двумя уже созданными блоками с Python кодом. Для этого щелчком выделите первый блок и добавьте новый блок через    кнопку в панели инструментов. Новый блок будет вставлен сразу за первым блоком.

Если вы все сделали правильно, то результат будет выглядеть так:

По умолчанию блоки в JupyterLab предназначены для кода на Python. Для того, чтобы превратить их в текстовые блоки, нужно сменить их тип через панель инструментов. В самом конце панели откройте список и выберите пункт «Markdown»:

 

Выделенный блок превратится в блок текста. Набранный текст можно оформить курсивом или сделать его жирным. Больше информации по Markdown (средства оформления текста) вы найдете справочной странице.

Вот так можно оформлять текстовые блоки блокнота:

Экспорт

Иногда нужно поделиться блокнотом с другими людьми. Есть несколько способов сделать это.

В JupyterLab можно экспортировать блокнот в самые разные форматы. Для этого в самом верху среды выберите вкладку «Notebook». В открывшемся меню выберите пункт «Export to…» и выберите формат (например, PDF), в который вы хотите преобразовать ваш блокнот.

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

Вот ссылка на gist с блокнотом из этой статьи.

Управление модулями Python

Включать/отключать/закачивать модули можно из Anaconda Navigator. Для этого в левом меню выберите пункт «Environments»:

По умолчанию отображается список установленных модулей (~217 штук). Среди них есть и  такие популярные, как numpy (работа с массивами) или scypi (научные и инженерные расчеты).

Для установки новых пакетов в выпадающем меню над таблицей (там, где написано «Installed») выберите пункт «Not installed»:

Список обновится — автоматически загрузится список неустановленных модулей.

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

Выводы

Я рекомендую вам использовать именно формат блокнотов для экспериментов и исследований в машинном обучении.

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

Аватара автора Петр Радько

Петр Радько

Сфера интересов — нейросети как стык передовых исследований по математике, биологии, информатике и физике. Мне нравится делиться тем, что я узнал. Считаю, что любую концепцию можно изложить просто и наглядно. Нейронные сети на глазах меняют наш мир. И надо знать их и уметь ими пользоваться!

Комментарии

avatar
Алексей
Алексей

Петр, подскажите, что такое анализ главных компонент. Наткнулся на статью про ИНС, где описывалась ее работа, и там конечные результаты описывались также с использованием анализа главных компонент.

Рене Рэзонгран
Рене Рэзонгран

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

Так, например не ясно, как оценивать конечный результат, если ИНС принимает решения на основе графика(классифицирует ситуации?). Я не могу награждать ИНС всё время за правильные решения и в то же время, я не знаю, в какой момент мне определить локальный минимум для нее.

Рене Рэзонгран
Рене Рэзонгран

Спасибо за статью. А будет ли продолжение учебника[neuralnet.info/book]?

Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: