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

1 мая, 2020

Подписывайся на наш канал в Telegram, чтобы ежедневно совершенствоваться в Python. Там выходят задачи, полезные советы и сливы платных курсов - перейти

Перевод статьи

Оглавление

  • Представляем Anaconda и Conda
  • Установка дистрибутива Miniconda Python
  • Понимание окружающей среды Conda
  • Понимание базового управления пакетами с Conda
    • Поиск и установка пакетов
    • Обновление и удаление пакетов
    • Использование каналов
    • Использование pip в среде Conda
  • Простой пример машинного обучения
  • Что дальше?

В последние годы Python широко использовался для численных и научных приложений. Однако для эффективного выполнения численных вычислений Python использует внешние библиотеки, иногда реализованные на других языках, таких как библиотека NumPy , которая частично реализована с использованием языка Фортрана.

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

В этой статье вы будете:

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

Бесплатный бонус: нажмите здесь, чтобы получить доступ к шпаргалке Conda с удобными примерами использования для управления средой и пакетами Python.

Представляем Anaconda и Conda

С 2011 года в состав Python входит pipсистема управления пакетами, используемая для установки и управления программными пакетами, написанными на Python. Однако для численных вычислений существует несколько зависимостей, которые не написаны на Python, поэтому первые выпуски pipне могли решить проблему самостоятельно.

Чтобы обойти эту проблему, Continuum Analytics выпустила Anaconda , дистрибутив Python, ориентированный на научные приложения, и Conda , систему управления пакетами и средой, которая используется в дистрибутиве Anaconda. Стоит отметить, что более поздние версии pipмогут обрабатывать внешние зависимости с помощью колес , но с помощью Anaconda вы сможете устанавливать критически важные библиотеки для науки о данных более плавно. (Вы можете прочитать больше об этом обсуждении здесь .)

Хотя Conda тесно связана с Anaconda Python Distribution, это два разных проекта с разными целями:

  • Anaconda – это полный дистрибутив программного обеспечения вэкосистеме PyData , включая сам Python, а также двоичные файлы для нескольких сторонних проектов с открытым исходным кодом. Помимо Anaconda, есть также Miniconda , минимальный дистрибутив Python, включающий в основном Conda и его зависимости, так что вы можете устанавливать с нуля только те пакеты, которые вам нужны.
  • Conda – это система управления пакетами, зависимостями и средой, которую можно установить без распространения Anaconda или Miniconda. Он работает в Windows, macOS и Linux и был создан для программ на Python, но может упаковывать и распространять программное обеспечение для любого языка. Основная цель – решить проблемы внешних зависимостей простым способом, загрузив предварительно скомпилированные версии программного обеспечения.В этом смысле это больше похоже на кроссплатформенную версию диспетчера пакетов общего назначения, такого как APT или YUM , который помогает находить и устанавливать пакеты независимо от языка. Кроме того, Conda является менеджером среды, поэтому, если вам нужен пакет, который требует другой версии Python, с помощью Conda можно настроить отдельную среду с совершенно другой версией Python, поддерживая вашу обычную версию Python на ваша среда по умолчанию.

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

Любопытно, что даже Гвидо ван Россум в своем выступлении на первой встрече PyData в 2012 году сказал, что когда дело доходит до упаковки, «на самом деле звучит так, что ваши потребности настолько необычны по сравнению с большим сообществом Python, что вы просто лучше строить свой собственный. (Вы можете посмотреть видео этого обсуждения .) Более подробную информацию об этом обсуждении можно найти здесь и здесь .

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

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

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

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

В этой статье основное внимание будет уделено использованию интерфейса командной строки (CLI) для настройки пакетов и сред. Тем не менее, можно использовать Conda для установки Anaconda Navigator , графического интерфейса пользователя (GUI), если хотите.

Miniconda можно установить с помощью установщика, доступного здесь . Вы заметите, что есть установщики для Windows, macOS и Linux, а также для 32-битных или 64-битных операционных систем. Вы должны рассмотреть соответствующую архитектуру в соответствии с вашей установкой Windows и загрузить версию Python 3.x (на момент написания этой статьи, 3.7).

Больше нет смысла использовать Python 2 в новом проекте, и если вам нужен Python 2 для какого-то проекта, над которым вы работаете, из-за какой-то библиотеки, которая не была обновлена, можно настроить среду Python 2, используя Conda, даже если вы установили дистрибутив Miniconda Python 3.x, как вы увидите в следующем разделе.

После завершения загрузки вам просто нужно запустить установщик и выполнить шаги установки:

  • Нажмите Далее на экране приветствия:
Экран приветствия установщика Miniconda
  • Нажмите « Я согласен», чтобы принять условия лицензии:
! [Лицензия установщика Miniconda
  • Выберите тип установки и нажмите « Далее» . Еще одним преимуществом использования Anaconda или Miniconda является возможность установки дистрибутива с использованием локальной учетной записи. (Не обязательно иметь учетную запись администратора.) Если это так, выберите Just Me . В противном случае, если у вас есть учетная запись администратора, вы можете выбрать Все пользователи :
Тип установки установщика iniconda
  • Выберите место установки и нажмите « Далее» . Если вы выбрали установку только для вас, по умолчанию будет находиться папка Miniconda3 в личной папке вашего пользователя. Важно не использовать пробелы в именах папок на пути к Miniconda, поскольку во многих пакетах Python возникают проблемы при использовании пробелов в именах папок:
Место установки установщика Miniconda
  • В разделе « Дополнительные параметры установки» предлагается использовать варианты по умолчанию, которые не включают Anaconda в переменную среды PATH и регистрируют Anaconda в качестве Python по умолчанию. Нажмите Установить, чтобы начать установку:
Miniconda Installer Дополнительные параметры установки
  • Подождите, пока установщик скопирует файлы:
Miniconda Установщик Установка
  • Когда установка завершится, нажмите Далее :
Установка Miniconda завершена
  • Нажмите « Готово», чтобы завершить установку и закрыть программу установки:
Miniconda Installer Finish

Поскольку Anaconda не была включена в переменную среды PATH, ее команды не будут работать в командной строке Windows по умолчанию. Чтобы использовать дистрибутив, вы должны запустить его собственную командную строку, что можно сделать, нажав на кнопку «Пуск» и на Anaconda Prompt под Anaconda3 (64 бит) :

Запустить Anaconda Prompt

Когда откроется приглашение, вы можете проверить, доступен ли Conda, запустив conda --version:

(base) C:\Users\IEUser>conda --version
conda 4.5.11

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

(base) C:\Users\IEUser>conda info

     active environment : base
    active env location : C:\Users\IEUser\Miniconda3
            shell level : 1
       user config file : C:\Users\IEUser\.condarc
 populated config files : C:\Users\IEUser\.condarc
          conda version : 4.5.11
    conda-build version : not installed
         python version : 3.7.0.final.0
       base environment : C:\Users\IEUser\Miniconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/win-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/win-64
                          https://repo.anaconda.com/pkgs/pro/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Users\IEUser\Miniconda3\pkgs
                          C:\Users\IEUser\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\IEUser\Miniconda3\envs
                          C:\Users\IEUser\AppData\Local\conda\conda\envs
                          C:\Users\IEUser\.conda\envs
               platform : win-64
             user-agent : conda/4.5.11 requests/2.19.1 CPython/3.7.0 Windows/10 Windows/10.0.17134
          administrator : False
             netrc file : None
           offline mode : False

Теперь, когда у вас установлена ​​Miniconda, давайте посмотрим, как работает среда Conda.

Понимание окружающей среды Conda

Когда вы начинаете разработку проекта с нуля, рекомендуется использовать последние версии библиотек, которые вам нужны. Однако при работе с чужим проектом, например, при запуске примера из Kaggle или Github , вам может потребоваться установить определенные версии пакетов или даже другую версию Python из-за проблем совместимости.

Эта проблема также может возникать при попытке запустить приложение, которое вы разработали давно, в котором используется определенная версия библиотеки, которая больше не работает с вашим приложением из-за обновлений.

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

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

Установка Miniconda предоставляет Conda и корневую среду с установленной версией Python и некоторыми базовыми пакетами. Помимо этой корневой среды, можно настроить дополнительные среды, включая различные версии Python и пакеты.

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

(base) C:\Users\IEUser>conda env list
# conda environments:
#
base                  *  C:\Users\IEUser\Miniconda3

Эта базовая среда является корневой средой, созданной установщиком Miniconda. Можно создать другую среду с именем otherenv, запустив conda create --name otherenv:

(base) C:\Users\IEUser>conda create --name otherenv
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\otherenv


Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate otherenv
#
# To deactivate an active environment, use
#
#     $ conda deactivate

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

(base) C:\Users\IEUser>conda activate otherenv

(otherenv) C:\Users\IEUser>

Вы можете открыть интерпретатор Python в этой среде, выполнив python:

(otherenv) C:\Users\IEUser>python
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

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

>>> quit()

(otherenv) C:\Users\IEUser>

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

(otherenv) C:\Users\IEUser>deactivate

(base) C:\Users\IEUser>

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

(base) C:\Users\IEUser>conda create --name py2 python=2.7
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\py2

  added / updated specs:
    - python=2.7


The following NEW packages will be INSTALLED:

    certifi:        2018.8.24-py27_1
    pip:            10.0.1-py27_0
    python:         2.7.15-he216670_0
    setuptools:     40.2.0-py27_0
    vc:             9-h7299396_1
    vs2008_runtime: 9.00.30729.1-hfaea7d5_1
    wheel:          0.31.1-py27_0
    wincertstore:   0.2-py27hf04cefb_0

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate py2
#
# To deactivate an active environment, use
#
#     $ conda deactivate


(base) C:\Users\IEUser>

Как показывают выходные данные conda create, на этот раз было установлено несколько новых пакетов, поскольку новая среда использует Python 2. Вы можете проверить, действительно ли новая среда использует Python 2, активировав его и запустив интерпретатор Python:

(base) C:\Users\IEUser>conda activate py2

(py2) C:\Users\IEUser>python
Python 2.7.15 |Anaconda, Inc.| (default, May  1 2018, 18:37:09) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

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

(py2) C:\Users\IEUser>conda env list
# conda environments:
#
base                     C:\Users\IEUser\Miniconda3
otherenv                 C:\Users\IEUser\Miniconda3\envs\otherenv
py2               *  C:\Users\IEUser\Miniconda3\envs\py2


(py2) C:\Users\IEUser>

В списке звездочка обозначает активированную среду. Можно удалить среду, запустив conda remove --name <environment name> --all. Так как удалить активированную среду невозможно, сначала необходимо деактивировать py2среду, чтобы удалить ее:

(py2) C:\Users\IEUser>deactivate

(base) C:\Users\IEUser>conda remove --name py2 --all

Remove all packages in environment C:\Users\IEUser\Miniconda3\envs\py2:


## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\py2


The following packages will be REMOVED:

    certifi:        2018.8.24-py27_1
    pip:            10.0.1-py27_0
    python:         2.7.15-he216670_0
    setuptools:     40.2.0-py27_0
    vc:             9-h7299396_1
    vs2008_runtime: 9.00.30729.1-hfaea7d5_1
    wheel:          0.31.1-py27_0
    wincertstore:   0.2-py27hf04cefb_0

Proceed ([y]/n)? y


(base) C:\Users\IEUser>

Теперь, когда вы рассмотрели основы управления средами с помощью Conda, давайте посмотрим, как управлять пакетами в этих средах.

Понимание базового управления пакетами с Conda

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

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

(base) C:\Users\IEUser>conda list
# packages in environment at C:\Users\IEUser\Miniconda3:
#
# Name                    Version                   Build  Channel
asn1crypto                0.24.0                   py37_0
ca-certificates           2018.03.07                    0
certifi                   2018.8.24                py37_1
cffi                      1.11.5           py37h74b6da3_1
chardet                   3.0.4                    py37_1
conda                     4.5.11                   py37_0
conda-env                 2.6.0                         1
console_shortcut          0.1.1                         3
cryptography              2.3.1            py37h74b6da3_0
idna                      2.7                      py37_0
menuinst                  1.4.14           py37hfa6e2cd_0
openssl                   1.0.2p               hfa6e2cd_0
pip                       10.0.1                   py37_0
pycosat                   0.6.3            py37hfa6e2cd_0
pycparser                 2.18                     py37_1
pyopenssl                 18.0.0                   py37_0
pysocks                   1.6.8                    py37_0
python                    3.7.0                hea74fb7_0
pywin32                   223              py37hfa6e2cd_1
requests                  2.19.1                   py37_0
ruamel_yaml               0.15.46          py37hfa6e2cd_0
setuptools                40.2.0                   py37_0
six                       1.11.0                   py37_1
urllib3                   1.23                     py37_0
vc                        14                   h0510ff6_3
vs2015_runtime            14.0.25123                    3
wheel                     0.31.1                   py37_0
win_inet_pton             1.0.1                    py37_1
wincertstore              0.2                      py37_0
yaml                      0.1.7                hc54c509_2

(base) C:\Users\IEUser>

Для управления пакетами вы также должны использовать Conda. Далее, давайте посмотрим, как искать, устанавливать, обновлять и удалять пакеты с помощью Conda.

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

Пакеты устанавливаются из репозиториев, которые Conda называет каналами , а некоторые каналы по умолчанию настраиваются установщиком. Для поиска конкретного пакета вы можете запустить conda search <package name>. Например, вот как вы ищите kerasпакет (библиотека машинного обучения):

(base) C:\Users\IEUser>conda search keras
Loading channels: done
# Name                  Version           Build  Channel
keras                     2.0.8  py35h15001cb_0  pkgs/main
keras                     2.0.8  py36h65e7a35_0  pkgs/main
keras                     2.1.2          py35_0  pkgs/main
keras                     2.1.2          py36_0  pkgs/main
keras                     2.1.3          py35_0  pkgs/main
keras                     2.1.3          py36_0  pkgs/main

... (more)

Согласно предыдущему выводу, существуют разные версии пакета и разные сборки для каждой версии, например, для Python 3.5 и 3.6.

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

(base) C:\Users\IEUser>conda search *keras*
Loading channels: done
# Name                  Version           Build  Channel
keras                     2.0.8  py35h15001cb_0  pkgs/main
keras                     2.0.8  py36h65e7a35_0  pkgs/main
keras                     2.1.2          py35_0  pkgs/main
keras                     2.1.2          py36_0  pkgs/main
keras                     2.1.3          py35_0  pkgs/main
keras                     2.1.3          py36_0  pkgs/main

... (more)

keras-applications           1.0.2          py35_0  pkgs/main
keras-applications           1.0.2          py36_0  pkgs/main
keras-applications           1.0.4          py35_0  pkgs/main

... (more)

keras-base                2.2.0          py35_0  pkgs/main
keras-base                2.2.0          py36_0  pkgs/main

... (more)

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

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

(base) C:\Users\IEUser>conda activate otherenv

(otherenv) C:\Users\IEUser>conda install keras
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\otherenv

  added / updated specs:
    - keras


The following NEW packages will be INSTALLED:

    _tflow_1100_select:  0.0.3-mkl
    absl-py:             0.4.1-py36_0
    astor:               0.7.1-py36_0
    blas:                1.0-mkl
    certifi:             2018.8.24-py36_1
    gast:                0.2.0-py36_0
    grpcio:              1.12.1-py36h1a1b453_0
    h5py:                2.8.0-py36h3bdd7fb_2
    hdf5:                1.10.2-hac2f561_1
    icc_rt:              2017.0.4-h97af966_0
    intel-openmp:        2018.0.3-0
    keras:               2.2.2-0
    keras-applications:  1.0.4-py36_1
    keras-base:          2.2.2-py36_0
    keras-preprocessing: 1.0.2-py36_1
    libmklml:            2018.0.3-1
    libprotobuf:         3.6.0-h1a1b453_0
    markdown:            2.6.11-py36_0
    mkl:                 2019.0-117
    mkl_fft:             1.0.4-py36h1e22a9b_1
    mkl_random:          1.0.1-py36h77b88f5_1
    numpy:               1.15.1-py36ha559c80_0
    numpy-base:          1.15.1-py36h8128ebf_0
    pip:                 10.0.1-py36_0
    protobuf:            3.6.0-py36he025d50_0
    python:              3.6.6-hea74fb7_0
    pyyaml:              3.13-py36hfa6e2cd_0
    scipy:               1.1.0-py36h4f6bf74_1
    setuptools:          40.2.0-py36_0
    six:                 1.11.0-py36_1
    tensorboard:         1.10.0-py36he025d50_0
    tensorflow:          1.10.0-mkl_py36hb361250_0
    tensorflow-base:     1.10.0-mkl_py36h81393da_0
    termcolor:           1.1.0-py36_1
    vc:                  14-h0510ff6_3
    vs2013_runtime:      12.0.21005-1
    vs2015_runtime:      14.0.25123-3
    werkzeug:            0.14.1-py36_0
    wheel:               0.31.1-py36_0
    wincertstore:        0.2-py36h7fe50ca_0
    yaml:                0.1.7-hc54c509_2
    zlib:                1.2.11-h8395fce_2

Proceed ([y]/n)?

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

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

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

(otherenv) C:\Users\IEUser>conda install keras --dry-run

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

(otherenv) C:\Users\IEUser>conda create --name envpython
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\envpython


Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate envpython
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Как вы видели ранее, поскольку корневая базовая среда использует Python 3.7, envpythonсоздается в том же варианте Python:

(base) C:\Users\IEUser>conda activate envpython

(envpython) C:\Users\IEUser>python
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()

(envpython) C:\Users\IEUser>

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

(envpython) C:\Users\IEUser>conda install python=3.6
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\envpython

  added / updated specs:
    - python=3.6


The following NEW packages will be INSTALLED:

    certifi:        2018.8.24-py36_1
    pip:            10.0.1-py36_0
    python:         3.6.6-hea74fb7_0
    setuptools:     40.2.0-py36_0
    vc:             14-h0510ff6_3
    vs2015_runtime: 14.0.25123-3
    wheel:          0.31.1-py36_0
    wincertstore:   0.2-py36h7fe50ca_0

Proceed ([y]/n)?

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

(envpython) C:\Users\IEUser>deactivate

(base) C:\Users\IEUser>conda install numpy scipy matplotlib
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3

  added / updated specs:
    - matplotlib
    - numpy
    - scipy


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    libpng-1.6.34              |       h79bbb47_0         1.3 MB
    mkl_random-1.0.1           |   py37h77b88f5_1         267 KB
    intel-openmp-2019.0        |              117         1.7 MB
    qt-5.9.6                   |   vc14h62aca36_0        92.5 MB
    matplotlib-2.2.3           |   py37hd159220_0         6.5 MB
    tornado-5.1                |   py37hfa6e2cd_0         668 KB
    pyqt-5.9.2                 |   py37ha878b3d_0         4.6 MB
    pytz-2018.5                |           py37_0         232 KB
    scipy-1.1.0                |   py37h4f6bf74_1        13.5 MB
    jpeg-9b                    |       hb83a4c4_2         313 KB
    python-dateutil-2.7.3      |           py37_0         260 KB
    numpy-base-1.15.1          |   py37h8128ebf_0         3.9 MB
    numpy-1.15.1               |   py37ha559c80_0          37 KB
    mkl_fft-1.0.4              |   py37h1e22a9b_1         120 KB
    kiwisolver-1.0.1           |   py37h6538335_0          61 KB
    pyparsing-2.2.0            |           py37_1          96 KB
    cycler-0.10.0              |           py37_0          13 KB
    freetype-2.9.1             |       ha9979f8_1         470 KB
    icu-58.2                   |       ha66f8fd_1        21.9 MB
    sqlite-3.24.0              |       h7602738_0         899 KB
    sip-4.19.12                |   py37h6538335_0         283 KB
    ------------------------------------------------------------
                                           Total:       149.5 MB

The following NEW packages will be INSTALLED:

    blas:            1.0-mkl
    cycler:          0.10.0-py37_0
    freetype:        2.9.1-ha9979f8_1
    icc_rt:          2017.0.4-h97af966_0
    icu:             58.2-ha66f8fd_1
    intel-openmp:    2019.0-117
    jpeg:            9b-hb83a4c4_2
    kiwisolver:      1.0.1-py37h6538335_0
    libpng:          1.6.34-h79bbb47_0
    matplotlib:      2.2.3-py37hd159220_0
    mkl:             2019.0-117
    mkl_fft:         1.0.4-py37h1e22a9b_1
    mkl_random:      1.0.1-py37h77b88f5_1
    numpy:           1.15.1-py37ha559c80_0
    numpy-base:      1.15.1-py37h8128ebf_0
    pyparsing:       2.2.0-py37_1
    pyqt:            5.9.2-py37ha878b3d_0
    python-dateutil: 2.7.3-py37_0
    pytz:            2018.5-py37_0
    qt:              5.9.6-vc14h62aca36_0
    scipy:           1.1.0-py37h4f6bf74_1
    sip:             4.19.12-py37h6538335_0
    sqlite:          3.24.0-h7602738_0
    tornado:         5.1-py37hfa6e2cd_0
    zlib:            1.2.11-h8395fce_2

Proceed ([y]/n)?

Теперь, когда вы рассмотрели, как искать и устанавливать пакеты, давайте посмотрим, как обновить и удалить их с помощью Conda.

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

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

Чтобы удалить пакет, вы можете запустить conda remove <package name>. Например, вот как вы удаляете numpyиз корневой базовой среды:

(base) C:\Users\IEUser>conda remove numpy
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3

  removed specs:
    - numpy


The following packages will be REMOVED:

    matplotlib: 2.2.3-py37hd159220_0
    mkl_fft:    1.0.4-py37h1e22a9b_1
    mkl_random: 1.0.1-py37h77b88f5_1
    numpy:      1.15.1-py37ha559c80_0
    scipy:      1.1.0-py37h4f6bf74_1

Proceed ([y]/n)?

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

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

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

(base) C:\Users\IEUser>conda search pytorch
Loading channels: done

PackagesNotFoundError: The following packages are not available from current channels:

  - pytorch

Current channels:

  - https://repo.anaconda.com/pkgs/main/win-64
  - https://repo.anaconda.com/pkgs/main/noarch
  - https://repo.anaconda.com/pkgs/free/win-64
  - https://repo.anaconda.com/pkgs/free/noarch
  - https://repo.anaconda.com/pkgs/r/win-64
  - https://repo.anaconda.com/pkgs/r/noarch
  - https://repo.anaconda.com/pkgs/pro/win-64
  - https://repo.anaconda.com/pkgs/pro/noarch
  - https://repo.anaconda.com/pkgs/msys2/win-64
  - https://repo.anaconda.com/pkgs/msys2/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.

В этом случае вы можете найти пакет здесь . Если вы ищете pytorch, вы получите следующие результаты:

Анаконда Поиск пирога

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

(base) C:\Users\IEUser>conda install -c pytorch pytorch
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3

  added / updated specs:
    - pytorch


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    pytorch-0.4.1              |py37_cuda90_cudnn7he774522_1       590.4 MB  pytorch

The following NEW packages will be INSTALLED:

    pytorch: 0.4.1-py37_cuda90_cudnn7he774522_1 pytorch

Proceed ([y]/n)?

Кроме того, вы можете добавить канал, чтобы Conda использовала его для поиска пакетов для установки. Для просмотра списка используемых каналов вы можете запустить conda config --get channels:

(base) C:\Users\IEUser>conda config --get channels
--add channels 'defaults'   # lowest priority

(base) C:\Users\IEUser>

Установщик Miniconda включает только defaultsканалы. Если включено больше каналов, необходимо установить их приоритет, чтобы определить, с какого канала будет установлен пакет, если он доступен из более чем одного канала.

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

(base) C:\Users\IEUser>conda config --append channels pytorch

(base) C:\Users\IEUser>conda config --get channels
--add channels 'pytorch'   # lowest priority
--add channels 'defaults'   # highest priority

(base) C:\Users\IEUser>conda install pytorch
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3

  added / updated specs:
    - pytorch


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    pytorch-0.4.1              |py37_cuda90_cudnn7he774522_1       590.4 MB  pytorch

The following NEW packages will be INSTALLED:

    pytorch: 0.4.1-py37_cuda90_cudnn7he774522_1 pytorch

Proceed ([y]/n)?

Не все пакеты доступны на каналах Conda. Однако это не проблема, так как вы также можете использовать pipдля установки пакетов в среде Conda. Посмотрим, как это сделать.

Использование pipвнутри среды Conda

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

Вы можете найти пакет здесь и использовать другой канал для его установки. Тем не менее, поскольку unipathэто чистый пакет Python, вы можете использовать его pipдля установки, как при обычной установке Python. Разница лишь в том, что вы должны использовать pipустановленный пакет Conda pip. Чтобы проиллюстрировать это, давайте создадим новую среду под названием newproject. Как упоминалось ранее, вы можете сделать это, запустив conda create:

conda create --name newproject

Далее, чтобы pipустановить, вы должны активировать среду и установить пакет Conda pip:

(base) C:\Users\IEUser>conda activate newproject

(newproject) C:\Users\IEUser>conda install pip
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\newproject

  added / updated specs:
    - pip


The following NEW packages will be INSTALLED:

    certifi:        2018.8.24-py37_1
    pip:            10.0.1-py37_0
    python:         3.7.0-hea74fb7_0
    setuptools:     40.2.0-py37_0
    vc:             14-h0510ff6_3
    vs2015_runtime: 14.0.25123-3
    wheel:          0.31.1-py37_0
    wincertstore:   0.2-py37_0

Proceed ([y]/n)?

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

(newproject) C:\Users\IEUser>pip install unipath
Collecting unipath
Installing collected packages: unipath
Successfully installed unipath-1.1
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

(newproject) C:\Users\IEUser>

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

(newproject) C:\Users\IEUser>conda list
# packages in environment at C:\Users\IEUser\Miniconda3\envs\newproject:
#
# Name                    Version                   Build  Channel
certifi                   2018.8.24                py37_1
pip                       10.0.1                   py37_0
python                    3.7.0                hea74fb7_0
setuptools                40.2.0                   py37_0
Unipath                   1.1                       <pip>
vc                        14                   h0510ff6_3
vs2015_runtime            14.0.25123                    3
wheel                     0.31.1                   py37_0
wincertstore              0.2                      py37_0

(newproject) C:\Users\IEUser>

Также возможно установить пакеты из системы контроля версий (VCS), используя pip. Например, давайте установим supervisorверсию 4.0.0dev0, доступную в репозитории Git. Поскольку Git не установлен в newprojectсреде, вы должны сначала установить его:

(newproject) C:\Users\IEUser> conda install git

Затем установите supervisor, используя pipдля установки из репозитория Git:

(newproject) pip install -e git://github.com/Supervisor/supervisor@abef0a2be35f4aae4a4edeceadb7a213b729ef8d#egg=supervisor

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

(newproject) C:\Users\IEUser>conda list
#
# Name                    Version                   Build  Channel
certifi                   2018.8.24                py37_1
git                       2.18.0               h6bb4b03_0
meld3                     1.0.2                     <pip>
pip                       10.0.1                   py37_0
python                    3.7.0                hea74fb7_0
setuptools                40.2.0                   py37_0
supervisor                4.0.0.dev0                <pip>

... (more)

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

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

В этом разделе вы настроите среду с помощью Conda и научите нейронную сеть функционировать как ворота XOR .

В вентиле XOR реализована цифровая логическая операция «ИЛИ» , которая широко используется в цифровых системах. Он принимает два цифровых входа, которые могут быть равны 0, представляя цифровое ложное значение или 1, представляя цифровое истинное значение, и выводит 1true ), если входы различны, или 0false ), если входы равны. В следующей таблице (называемой таблицей истинности в терминологии цифровых систем) суммируется операция шлюза XOR:

Вход АВход BВыход: XOR B
000
011
101
110

Операция XOR может быть интерпретирована как проблема классификации, учитывая, что она принимает два входа и должна классифицировать их в один из двух классов, представленных 0или 1, в зависимости от того, равны ли входы друг другу или отличаются друг от друга.

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

Чтобы реализовать нейронную сеть, давайте создадим новую среду Conda с именем nnxor:

(base) C:\Users\IEUser>conda create nnxor

Затем активируем его и установим пакет keras:

(base) C:\Users\IEUser>conda activate nnxor

(nnxor) C:\Users\IEUser>conda install keras

kerasэто высокоуровневый API, который делает простые в реализации нейронные сети поверх известных библиотек машинного обучения, таких как TensorFlow .

Вы научите следующую нейронную сеть действовать как ворота XOR:

Нейронная сеть ворот XOR

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

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

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

Программный файл

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

import numpy as np
np.random.seed(444)

from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.optimizers import SGD

X = np.array([[0, 0], 
              [0, 1],
              [1, 0],
              [1, 1]])
y = np.array([[0], [1], [1], [0]])

model = Sequential()
model.add(Dense(2, input_dim=2))
model.add(Activation('sigmoid'))
model.add(Dense(1))
model.add(Activation('sigmoid'))

sgd = SGD(lr=0.1)
model.compile(loss='mean_squared_error', optimizer=sgd)

model.fit(X, y, batch_size=1, epochs=5000)

if __name__ == '__main__':
    print(model.predict(X))

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

Затем вы определяете Xмассив, содержащий 4 возможных набора входов AB для операции XOR, и yмассив, содержащий выходные данные для каждого из наборов входов, определенных в X.

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

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

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

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

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

Запустив этот сценарий, вы увидите эволюцию процесса обучения и повышение производительности по мере поступления в сеть новых примеров обучения:

(nnxor) C:\Users\IEUser>cd nnxor

(nnxor) C:\Users\IEUser\nnxor>python nnxor.py
Using TensorFlow backend.
Epoch 1/5000
2018-09-16 09:49:05.987096: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2018-09-16 09:49:05.993128: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
4/4 [==============================] - 0s 39ms/step - loss: 0.2565
Epoch 2/5000
4/4 [==============================] - 0s 0us/step - loss: 0.2566
Epoch 3/5000
4/4 [==============================] - 0s 0us/step - loss: 0.2566
Epoch 4/5000
4/4 [==============================] - 0s 0us/step - loss: 0.2566
Epoch 5/5000
4/4 [==============================] - 0s 0us/step - loss: 0.2566
Epoch 6/5000
4/4 [==============================] - 0s 0us/step - loss: 0.2566

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

Epoch 4997/5000
4/4 [==============================] - 0s 0us/step - loss: 0.0034
Epoch 4998/5000
4/4 [==============================] - 0s 0us/step - loss: 0.0034
Epoch 4999/5000
4/4 [==============================] - 0s 0us/step - loss: 0.0034
Epoch 5000/5000
4/4 [==============================] - 0s 0us/step - loss: 0.0034
[[0.0587215 ]
 [0.9468337 ]
 [0.9323144 ]
 [0.05158457]]

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

Куда пойти отсюда

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

В этой статье вы рассмотрели основы настройки среды численных вычислений Python на компьютере с Windows с помощью дистрибутива Anaconda Python.

Бесплатный бонус: нажмите здесь, чтобы получить доступ к шпаргалке Conda с удобными примерами использования для управления средой и пакетами Python.

Теперь, когда у вас есть рабочая среда, пришло время начать работу с некоторыми приложениями. Python – один из наиболее используемых языков для науки о данных и машинного обучения, а Anaconda – один из самых популярных дистрибутивов, используемых в различных компаниях и исследовательских лабораториях. Он предоставляет несколько пакетов для установки библиотек, на которые опирается Python для сбора, обработки, обработки и визуализации данных.


Совершенствуй знания каждый день у нас в Телеграм-каналах

Вопросы, реклама — VK | Telegram