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

0
6009
Добавить в избранное

Машинное обучение − это просто. Но знаете ли вы, что можно использовать Python для машинного обучения? Вот инструкция по настройке для Windows.

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

Anaconda и Conda

Image result for python machine learning setup

Используемый в Python pip не идеален. Для оптимизации работы был выпущен дистрибутив Anaconda и система управления Conda, которые могут помочь в настройке Python для машинного обучения.

Хотя Conda тесно связана с Anaconda, эти проекты отличаются своими функциями. Anaconda − дистрибутив ПО в экосистеме PyData, которая включает сам язык программирования Python, а также двоичные файлы для нескольких сторонних проектов. Существует и Miniconda − версия с минимальным исходным пакетом. Conda − система управления пакетами, которая может быть установлена без Anaconda или Miniconda. Она способна решать проблемы внешних зависимостей, путем загрузки скомпилированных версий ПО. Кроме того, Conda является менеджером среды. С ее помощью вы можете настроить отдельную среду. Сейчас мы рассмотрим процесс установки Miniconda.

Установка дистрибутива Miniconda

Скачайте и установите необходимую версию Miniconda на ПК. При установке продвинутых настроек снимите галочку с первого пункта.

Поскольку при установке не был выбран пункт «Add Anaconda to my PATH environment variable», то команды Anaconda не будут работать в командной строке по умолчанию. Для их использования следует запустить дистрибутив отдельно. Когда он откроется, проверьте доступность Conda, запустив conda —version:

Чтобы получить больше информации об установке, запустите conda info:

Понимание среды Conda

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

Conda включает собственный менеджер среды и дает некоторые преимущества относительно Virtualenv. Кроме того, среды Conda полностью совместимы с базовыми пакетами языка Python, которые могут быть установлены с помощью pip.

Используя Anaconda, можно проверить доступные среды Conda, запустив сonda env list:

Базовая среда − корневая среда, созданная Miniconda. Можно создать еще одну, под названием otherenv, путем запуска conda create —name otherenv:

После завершения процесса создания среды, можно ее активировать, запустив conda activate otherenv. Заметить изменения среды можно, посмотрев на скобки в начале строки:

Откройте Python interpreter в этой среде, запустив python:

Среда включает в себя Python 3.7.0, ту же версию, что включена в корневую среду. Чтобы выйти, запустите quit():

Чтобы отключить среду otherenv и вернуться в корневую среду, пропишите deactivate:

Conda позволяет легко создавать среды с различными версиями Python. Чтобы включить другую версию в среду, укажите ее, используя python =<version> при запуске conda create. Чтобы создать среду с именем py2 с Python 2.7, запустите conda create —name py2 python=2.7:

Как видно из вывода conda create, были установлены новые пакеты, так как среда использует Python 2.7. Можно проверить, что среда действительно использует его, активировав Python interpreter:

Теперь, если вы запустите conda env list, можно увидеть две среды, которые были созданы вами:

Asterisk указывает на активную среду. Ее можно удалить, выполнив команду conda remove —name <environment name> —all:

Управление базовыми пакетами с помощью Conda

Пакеты ПО могут быть установлены с помощью Conda. Корневая база Miniconda включает в себя базовые пакеты, которые не являются частью стандартной библиотеки Python для настройки машинного обучения.

Установка по умолчанию включает минимум пакетов Conda. Чтобы проверить список установленных пакетов, нужно убедиться, что она активна, и запустить conda list. В корневой среде устанавливаются эти пакеты:

Поиск и установка пакетов

Пакеты устанавливаются из репозиториев, называемых channels by Conda. Чтобы выполнить поиск определенного пакета, запустите поиск <package name>. Вот так вы будете искать keras:

Для каждой версии существуют разные версии пакетов и сборки. Предыдущий поиск показывает только пакеты с именем keras. Чтобы выполнить более широкий поиск, используйте *. Например, при запуске conda search *keras*, вы получите следующее:

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

Чтобы установить пакет, запустите conda install <package name>. По умолчанию самая новая версия пакета будет установлена в активной среде. Установите пакет keras в среду otherenv, созданную вами:

Conda управляет необходимыми функциями для пакета. Так как у keras их много, при его установке Conda позволяет установить большой список пакетов.

Поскольку новая сборка keras использует Python 3.6, а среда otherenv была создана с использованием Python 3.7, пакет python 3.6.6 был включен как зависимость. После подтверждения установки вы сможете проверить, что версия Python для среды otherenv была понижена до версии 3.6.6.

Но если вы не хотите понижать версию вашего пакета, просто создайте новую среду с необходимой версией Python. Чтобы проверить список пакетов и прочего, необходимого для ее установки, посмотрите на параметр —dry-run:

При необходимости можно изменить базовую версию Python среды Conda, установив определенную версию пакета python. Создайте новую среду под названием envpython:

Поскольку корневая среда использует Python 3,7, создается envpython с этой же версией.

Чтобы установить определенную версию пакета , запустите conda install <package name>=<version>. Вот так вы установите Python 3.6 в среду envpython:

Если вам нужно установить несколько пакетов, запустите conda install, указав имена пакетов. Вот как вы установите numpy, scipy и matplotlib:

Обновление и удаление пакетов

Иногда вам будет нужно обновлять пакеты. Для этого запустите conda update <package name>. Если вы хотите обновить все пакеты, активируйте среду и запустите conda update —all.
Чтобы удалить пакеты, пропишите conda remove <package name>, но помните, что при удалении пакета, все зависимые от него тоже удалятся:

Использование каналов

Иногда вы не сможете найти нужные вам пакеты на базовых каналах. Вот так вы будете устанавливать pytorch:

В случае, если будете искать pytorch на сайте anaconda, вы получите следующие результаты:

Anaconda Search for pytorch

В канале pytorch имеется пакет под названием pytorch с версией 0.4.1. Чтобы установить пакет с определенного канала, используйте параметр -c <chanel> вместе с conda install:

Также можно добавить канал, чтобы Conda производила там поиск пакетов. Чтобы посмотреть текущие каналы, запустите conda config —get channels:

Когда у вас появится множество каналов,нужно будет выставить приоритет. Чтобы добавить канал с наименьшим приоритетом в список, запустите conda config —append channels <channel name>. С наивысшим − conda config —prepend channels <channel name>. Рекомендуется выставлять новым каналам низкий приоритет, чтобы продолжить использовать каналы по умолчанию. Таким образом, вы можете установить pytorch, добавив канал pytorch и запустив conda install pytorch:

Использование Pip в среде Conda

Иногда при настройке Python для машинного обучения вам могут понадобиться чистые пакеты Python, которые будут недоступны на каналах Conda. Например, Unipath.

Вы сможете найти пакет, используя другой канал. Но так как unipath − чистый пакет Python, то можно использовать pip для его установки. Следует использовать pip, установленный conda create:

Чтобы установить pip, активируйте среду и установите пакет Conda:

Наконец, используйте pip, чтобы установить unipath:

После установки вы можете посмотреть на пакеты с помощью conda list и проверить, что Unipath был установлен:

Также можно использовать пакеты из системы VSC с помощью pip. Чтобы активировать supervisor, version 4.0.0dev0. доступный в репозитории Git, для начала установите последний:

Теперь установите supervisor, используя pip, с помощью репозитория Git:

После завершения установки supervisor будет указан в списке установленных пакетов:

Простой пример машинного обучения

XOR gate − ещё один момент, который стоит знать в процессе настройки Python для машинного обучения: используя Conda обучите нейронную сеть функционировать как XOR gate

XOR gate реализуют операцию OR. Требуется два цифровых входа, равные 0 или 1. И вывода, 1 (true) и 0 (false). Таблица ниже суммирует операции XOR gate:

Python для машинного обучения

Операцию XOR можно интерпретировать как classification problem, потому что она принимает два входа и должна классифицировать их как 0 или 1 в зависимости от того, равны они друг другу или нет. Именно этот пример обычно используется в качестве первого случая обучения нейронной сети, поскольку он прост, но в то же время требует нелинейного классификатора, такого как нейронная сеть. Чтобы реализовать нейронную сеть, создайте среду Conda, названную nnxor:

Теперь активируйте и установите пакет keras:

keras − высокоуровневый API, который упрощает внедрение нейронных сетей поверх известных библиотек, таких как TensorFlow. Обучите следующую нейронную сеть действовать как XOR gate:

XOR gate neural network

Сеть берет два входа (A, B) и передает их двум нейронам, показанными большими кругами. Затем она принимает входные данные этих нейронов и подает их на выходной нейрон, который должен обеспечивать классификацию в соответствии с таблицей XOR.

Процесс обучения состоит в том, чтобы настроить значения w_1 до w_6, чтобы выход соответствовал таблице. Для этого входные примеры начнут подаваться по одному, вывод станет рассчитываться с текущими значениями, и, сравнивая вывод с желаемым, значения будут корректироваться.

Для этого создайте папку с именем nnxor в директории (C:\Users\IEUser) с файлом под именем nnxor.py, чтобы сохранить программу Python для реализации нейронной сети.

Program File

В файле nnxor.py выберите сеть для обучения и тестирования:

Импортируйте numpy, инициализируйте случайный seed, чтобы можно было воспроизвести те же результаты при повторном запуске программы и импортировать keras, используемый в сети.

Определите массив X, содержащий 4 возможных набора A-B входов, и массив y, содержащий выходные данные.

Следующие пять строк сформируют нейронную сеть. Модель Sequental() − одна из моделей keras для определения нейронной сети. Определите первый слой из двух входных нейронов, определив их функцию активации в качестве sigmond function. Затем обозначьте входной слой их одного нейрона с той же функцией активации.

Следующие две строки определяют детали обучения сети. Чтобы настроить параметры, используйте Stochastic Gradient Descent с оптимальной скоростью обучения, равной 0,1. Наконец, выполните обучение с помощью fit(), используя X и Y в качестве примеров обучения, после того, как каждый пример будет загружен в сеть (batch_size=1). Число epochs представляет собой количество попыток обучения сети.

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

На последней строке вы печатаете прогнозируемые значения 4 возможных примеров ввода.

После обучения, вы можете проверить прогнозы, которые дает сеть для возможных входных значений:

Как вы определите X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]), ожидаемые входные округленные значения станут равны 0,1,1 и 0, что согласуется с прогнозами сети.

Машинное обучение применяется в различных областях, охватывая все большую аудиторию. Тем не менее, создание среды может быть сложней задачей. В этой статье вы узнали об основах создания среды Python на Windows с использованием Anaconda. Теперь, когда у вас есть основа, пришло время начать работу с настоящими приложениями.

Понравилась статья о настройке Python для машинного обучения? Книги по Python и другие материалы:

Источник: Настройка Python для машинного обучения on Realpython

Интересуетесь программированием на Python?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.




Оставьте комментарий