Как установить scipy python windows

Обновлено: 02.07.2024

SciPy — это библиотека на основе Python с открытым исходным кодом, которая используется в математике, научных вычислениях, технике и технических вычислениях.

SciPy также произносится как «Вздох Пи».

Подпакеты SciPy:

  • Ввод / вывод файла — scipy.io
  • Специальная функция — scipy.special
  • Операция по линейной алгебре — scipy.linalg
  • Интерполяция — scipy.interpolate
  • Оптимизация и подгонка — scipy.optimize
  • Статистика и случайные числа — scipy.stats
  • Численная интеграция — scipy.integrate
  • Быстрые преобразования Фурье — scipy.fftpack
  • Обработка сигналов — scipy.signal
  • Работа с изображениями — scipy.ndimage

В этом уроке вы узнаете:

Зачем использовать SciPy

  • SciPy содержит множество подпакетов, которые помогают решить наиболее распространенную проблему, связанную с научными вычислениями.
  • SciPy является наиболее используемой научной библиотекой, уступающей только научной библиотеке GNU для C / C ++ или Matlab.
  • Простой в использовании и понимании, а также быстрая вычислительная мощность.
  • Он может работать с массивом библиотеки NumPy.

Numpy VS SciPy

Numpy:

  • Numpy написан на C и используется для математических или численных расчетов.
  • Это быстрее, чем другие библиотеки Python
  • Numpy — самая полезная библиотека для Data Science для выполнения базовых вычислений.
  • Numpy не содержит ничего, кроме типа данных массива, который выполняет самые основные операции, такие как сортировка, формирование, индексация и т. Д.

SciPy:

  • SciPy построен на вершине NumPy
  • SciPy — это полнофункциональная версия линейной алгебры, в то время как Numpy содержит только несколько функций.
  • Большинство новых функций Data Science доступно в Scipy, а не в Numpy.

SciPy — Установка и настройка среды

Вы также можете установить SciPy в Windows через pip

Установите Scipy на Linux

Установите SciPy в Mac

Прежде чем приступить к изучению SciPy, вам необходимо знать основные функциональные возможности, а также различные типы массивов NumPy.

Стандартный способ импорта модулей infSciPy и Numpy:

Пакет ввода / вывода файла:

Scipy, пакет ввода / вывода, обладает широким набором функций для работы с различными форматами файлов: Matlab, Arff, Wave, Matrix Market, IDL, NetCDF, TXT, CSV и двоичным форматом.

Давайте возьмем один пример формата файла, который регулярно использует MatLab:

  • Строки 1 и 2: импортируйте необходимую библиотеку scipy с пакетом ввода-вывода и Numpy.
  • Строка 3 : Создать 4 x 4, размерный массив
  • Строка 4 : сохранить массив в файле example.mat .
  • Строка 5: получить данные из файла example.mat
  • Строка 6 : вывод на печать.

Пакет специальных функций

  • Пакет scipy.special содержит множество функций математической физики.
  • Специальная функция SciPy включает в себя кубический корень, экспоненциальный, логарифмический экспоненциальный, ламберт, перестановку и комбинации, гамму, бесселеву, гипергеометрический, кельвин, бета, параболический цилиндр, относительную погрешность и т. Д.
  • Чтобы в одной строке описать все эти функции, введите в консоли Python:

Кубическая корневая функция:

Функция Cubic Root находит корень куба значений.

Вывод: массив ([3., 4.])

Экспоненциальная функция:

Экспоненциальная функция вычисляет 10 ** х поэлементно.

Выход: [1.e + 01 1.e + 10]

Перестановки и комбинации:

SciPy также предоставляет функциональность для расчета перестановок и комбинаций.

Перестановки —

Экспоненциальная функция логарифмической суммы

Log Sum Exponential вычисляет логарифм суммы экспоненциального входного элемента.

Функция Бесселя

Функция вычисления N-го целого порядка

  • Линейная алгебра SciPy — это реализация библиотек BLAS и ATLAS LAPACK.
  • Производительность линейной алгебры очень быстрая по сравнению с BLAS и LAPACK.
  • Подпрограмма линейной алгебры принимает объект двумерного массива, и вывод также является двумерным массивом.

Теперь давайте проведем тест с scipy.linalg,

Вычисление определителя двумерной матрицы,

Обратная матрица —

Обратная матрица Сципи вычисляет обратную матрицу.

Собственные значения и собственный вектор — scipy.linalg.eig ()

  • Наиболее распространенная проблема в линейной алгебре — это собственные значения и собственный вектор, которые легко решаются с помощью функции eig () .
  • Теперь давайте найдем собственное значение ( X ) и соответствующий собственный вектор двумерной квадратной матрицы.

Дискретное преобразование Фурье — scipy.fftpack

  • DFT — это математический метод, который используется для преобразования пространственных данных в частотные данные.
  • БПФ (быстрое преобразование Фурье) представляет собой алгоритм для вычисления ДПФ
  • БПФ применяется к многомерному массиву.
  • Частота определяет количество сигнала или длину волны в конкретный период времени.

Пример: возьмите волну и покажите, используя библиотеку Matplotlib. мы берем простой периодический пример функции sin (20 × 2πt)


Вы можете видеть это. Частота составляет 5 Гц, и ее сигнал повторяется через 1/5 секунды — это вызов как определенный период времени.

Теперь давайте использовать эту синусоидальную волну с помощью приложения DFT.


Оптимизация и встраивание в SciPy — scipy.optimize

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


Оптимизация успешно завершена.

Текущее значение функции: -23.241676

Оценка функций: 18

Оценка градиента: 6

  • В этом примере оптимизация выполняется с помощью алгоритма градиентного спуска с начальной точки.
  • Но возможная проблема — локальные минимумы вместо глобальных минимумов. Если мы не найдем соседа глобальных минимумов, то нам нужно применить глобальную оптимизацию и найти функцию глобальных минимумов, используемую в качестве bashopping (), которая объединяет локальный оптимизатор.

optimize.basinhopping (функция, 0)

Алгоритм Нелдера-Мида:

  • Алгоритм Нелдера-Мида выбирает через параметр метода.
  • Это обеспечивает наиболее простой способ минимизации справедливого поведения.
  • Алгоритм Нелдера — Мида не используется для оценки градиента, потому что может потребоваться больше времени, чтобы найти решение.

Обработка изображений с помощью SciPy — scipy.ndimage

  • scipy.ndimage — это подмодуль SciPy, который в основном используется для выполнения операций с изображениями
  • ndimage означает «n» размерное изображение.
  • SciPy Image Processing обеспечивает преобразование геометрии (поворот, обрезка, отражение), фильтрацию изображения (резкое и четкое), отображение изображения, сегментацию изображения, классификацию и извлечение признаков.
  • Пакет MISC в SciPy содержит готовые изображения, которые можно использовать для выполнения задач по обработке изображений

Пример: Давайте возьмем пример геометрического преобразования изображений


Теперь мы перевернем текущее изображение:


Пример : вращение изображения с использованием Scipy,


Интеграция со Scipy — Численная интеграция

  • Когда мы интегрируем любую функцию, где аналитическое интегрирование невозможно, нам нужно обратиться к числовому интегрированию
  • SciPy предоставляет функциональность для интеграции функций с числовой интеграцией.
  • Библиотека scipy.integrate имеет правила одинарной, двойной, тройной, кратной, квадрата Гаусса, правила Ромберга, Трапеции и Симпсона.

Пример: теперь возьмем пример единой интеграции


Здесь а верхний предел и б нижний предел

Здесь функция возвращает два значения, в которых первое значение является интегрированием, а второе — оцененной ошибкой в ​​интеграле.

Пример: теперь возьмем пример двойной интеграции. Мы находим двойное интегрирование следующего уравнения,

Библиотека Python SciPy – это набор удобных функций, построенных на NumPy и математических алгоритмах.

  • В настоящее время библиотека SciPy поддерживает интеграцию, градиентную оптимизацию, специальные функции, средства решения обыкновенных дифференциальных уравнений, инструменты параллельного программирования и многое другое. Другими словами, мы можем сказать, что если что-то есть в общем учебнике числовых вычислений, высока вероятность того, что вы найдете его реализацию в SciPy.
  • Интерактивный сеанс с SciPy – это, по сути, среда обработки данных и прототипирования системы, такая же, как MATLAB, Octave, Scilab или R-lab.
  • SciPy – это проект с открытым исходным кодом, выпущенный под лицензией BSD.

Почему SciPy?

SciPy предоставляет высокоуровневые команды и классы для управления данными и визуализации данных, что значительно увеличивает мощность интерактивного сеанса Python.

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

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

Установка библиотеки SciPy

Мы обсудим некоторые основные функции и важные особенности SciPy, но перед установкой SciPy. Мы можем установить пакеты SciPy, просто используя pip, выполните следующую команду в терминале (добавьте sudo, если необходимо):

Чтобы установить этот пакет с помощью conda run:

Импорт

Чтобы начать использовать Scipy в наших проектах python, мы просто импортируем Scipy как:

Взаимодействие с Numpy

Как мы уже знаем, SciPy построен на NumPy, поэтому для всех основных нужд мы можем использовать сами функции NumPy:

Функции из numpy и numpy.lib.scimath также содержатся в SciPy, но рекомендуется использовать их напрямую, а не проходить через SciPy в этом случае.

Работа с polynomial

В SciPy есть два способа работы с polynomial. Первый использует класс poly1d. Этот класс принимает коэффициенты или корни для инициализации и формирует полиномиальный объект. Когда мы печатаем этот объект, мы видим, что он напечатан, как polynomial. Давайте посмотрим на пример кода:

Пример работы с polynomial

Другой способ работы с polynomial – использовать массив коэффициентов. Существуют функции, доступные для выполнения операций с polynomial, представленными в виде последовательностей, первый метод выглядит намного проще в использовании и дает вывод в удобочитаемой форме, поэтому я предпочитаю первый для примера.

Линейная алгебра

SciPy обладает очень быстрыми возможностями линейной алгебры, поскольку он построен с использованием библиотек ATLAS LAPACK и BLAS. Библиотеки доступны даже для использования, если вам нужна более высокая скорость, но в этом случае вам придется копнуть глубже.

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

Давайте посмотрим на процедуру линейной алгебры на примере. Мы попытаемся решить систему линейной алгебры, что легко сделать с помощью команды scipy linalg.solve.

Этот метод ожидает входную матрицу и вектор правой части:

Пример составляющей вектора выхода

Интеграция SciPy

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

Попробуем интегрировать лямбда функцию в скрипт:

Пример составляющей интеграции

Преобразование Fourier

Анализ Fourier помогает нам выразить функцию, как сумму периодических компонентов и восстановить сигнал из этих компонентов.

Давайте посмотрим на простой пример преобразования Fourier. Мы будем строить сумму двух синусов:

Графическая составляющая Фурье

Специальные функции

В специальном подпакете SciPy есть определения множества функций математической физики. Доступны следующие функции: эри, Бессель, бета, эллиптическая, гамма, гипергеометрическая, Кельвина, Матье, параболический цилиндр, сфероидальная волна и струве. Давайте посмотрим на функцию Бесселя.

Функции Бесселя – это семейство решений дифференциального уравнения Бесселя с вещественным или комплексным порядком альфа.

Давайте лучше рассмотрим это на примере, пример представляет собой круглый барабан, закрепленный на краю:

Пример графической составляющей Бесселя

Некоторые функции, такие как функция бинарной энтропии, функция шага Хевисайда и функция линейного изменения, легко реализовать с помощью существующих функций NumPy и SciPy и, следовательно, не включены в этот пакет.

Вывод

В этом посте мы разобрали библиотеку SciPy в Python для простых и эффективных математических операций.

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

Формального определения термина науки о данных (data science) не существует, но я рассматриваю его как применение ПО для анализа данных с использованием классических метод статистики и алгоритмов машинного обучения. До недавнего времени большая часть анализа данных выполнялась с помощью дорогостоящих коммерческих продуктов, но в последние несколько лет значительно увеличилось использование альтернативного ПО с открытым исходным кодом.

По итогам бесед со своими коллегами, могу сказать, что имеется три наиболее распространенных подхода к анализу в науке о данных с применением ПО с открытым исходным кодом: язык R, язык Python в комбинации с библиотекой SciPy («scientific Python») и интегрированные языковые и исполняющие среды вроде SciLab и Octave.

По моему мнению, самая трудная часть в освоении нового языка программирования или технологии — начало работы с ним, поэтому я подробно опишу, как установить (и удалить) ПО, необходимое для выполнения SciPy-программы. Затем я расскажу о нескольких способах редактирования и запуска SciPy-программы и поясню, почему я предпочитаю использовать программу Integrated Development Environment (IDLE).

Вывод типичной SciPy-программы

Рис. 1. Вывод типичной SciPy-программы

Установка стека SciPy

Стек SciPy состоит из трех компонентов: Python, NumPy и SciPy. Язык Python имеет базовые средства, такие как управляющие структуры наподобие цикла while, универсальный тип данных list, но, что интересно, отсутствует встроенный тип «массив». Библиотека NumPy добавляет поддержку массивов и матриц плюс некоторые сравнительно простые функции, например для поиска в массиве и его сортировки. Библиотека SciPy добавляет сложные функции, работающие с данными, которые хранятся в массивах и матрицах.

Чтобы выполнить SciPy-программу (с технической точки зрения, это скрипт, поскольку Python является интерпретируемым, а не компилируемым языком), нужно установить Python, затем NumPy, потом SciPy. Установка не особо сложна, и вы можете установить программный пакет, включающий все три компонента. Один из популярных пакетов — дистрибутив Anaconda, который поддерживается Continuum Analytics на сайте continuum.io. Однако я покажу, как установить эти компоненты индивидуально.

Установка Python

Рис. 2. УстановкаPython

Щелкнув кнопку Download, вы должны выбрать между немедленным запуском пакета .msi программы установки и его сохранением для последующего запуска. Можете щелкнуть кнопку Run. Установщик использует мастер. На первом экране будет запрос, хотите ли вы установить пакет для всех пользователей или только для текущего пользователя. По умолчанию установка происходит для всех пользователей, так что щелкните Next.

На следующем экране вас попросят указать корневой каталог установки. По умолчанию — это C:\Python27 (а не более привычный каталог C:\Program Files), и я предлагаю использовать вариант по умолчанию, щелкнув Next. Следующий экран позволяет включать или исключать различные компоненты вроде документации и утилит, таких как pip (аббревиатура «pip installs Python»). Компоненты Python по умолчанию отлично подходят, так что вновь щелкните Next.

Начнется установка, и вы увидите окно с привычной синей полоской прогресса. По окончании установки появится окно с кнопкой Finish — щелкните ее.

По умолчанию процесс установки Python не модифицирует переменную окружения PATH. Вы захотите добавить в эту переменную C:\Python27, C:\Python27\Scripts и C:\Python27\Lib\idlelib, чтобы у вас была возможность запускать Python из командной оболочки и использовать редактор IDLE без необходимости перехода в соответствующие каталоги.

Вы должны удостовериться, что Python установлен правильно. Запустите командную оболочку и перейдите в корневой каталог своей системы, введя команду cd \. Теперь введите команду python -- version (обратите внимание на два символа-дефиса). Если Python отвечает, он установлен правильно.

Установка NumPy и SciPy

Пакеты NumPy и SciPy можно установить из исходного кода с помощью утилиты pip в Python. Подход с pip хорошо работает для пакетов, содержащих чистый код на Python, но NumPy и SciPy имеют точки подключения (hooks) к скомпилированному коду на языке C, поэтому установить их через pip не так-то просто.

К счастью, члены сообщества Python создали заранее скомпилированные в двоичный код установщики для NumPy и SciPy. Я рекомендую задействовать тот, который поддерживается в репозитарии SourceForge. Чтобы установить NumPy, перейдите по ссылке bit.ly/1Q3mo4M, где вы увидите ссылки на разные версии. Советую использовать самую свежую версию, которая скачивается чаще всего.

Вы увидите список ссылок. Найдите ссылку с именем, напоминающим numpy-1.10.2-win32-superpack-python2.7.exe, как показано на рис. 3. Убедитесь, что исполняемый файл соответствует вашей версии Python, и щелкните эту ссылку. После короткой паузы вам будет предложено сразу же запустить самораспаковывающийся исполняемый файл установщика или сохранить его для установки впоследствии. Щелкните кнопку Run.

Установка NumPy

Рис. 3. УстановкаNumPy

Установщик NumPy использует мастер. Первый экран просто отображает вводную заставку. Щелкните кнопку Next. На следующем экране вас попросят указать каталог установки. Установщик найдет существующий каталог установки Python и порекомендует установить NumPy в каталог C:\Python27\Lib\site-packages. Согласитесь и щелкните кнопку Next.

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

После установки NumPy следующий шаг — установка пакета SciPy, и этот процесс идентичен таковому для NumPy. Перейдите по bit.ly/1QbwJ0z и найдите самый недавний, хорошо отработанный каталог. Перейдите в него и найдите ссылку на исполняемый файл с названием, похожим на scipy-0.16.1-win32-­superpack-python2.7.exe, и щелкните его для запуска самораспаковывающегося установщика.

Одна из приятных особенностей стека SciPy состоит в том, что он позволяет очень легко удалять компоненты. Вы можете перейти в Windows Control Panel, Programs and Features, выбрать компонент (т. е. Python, NumPy или SciPy) для удаления, щелкнуть кнопку Uninstall, и компонент будет быстро и корректно удален.

Редактирование и запуск SciPy-программы

Файл запуска программы idle.bat по умолчанию находится в каталоге C:\Python27\Lib\idelib. Если вы добавили этот каталог в свою системную переменную окружения PATH, то можете запускать IDLE открытием командной оболочки и вводом команды idle. Это приведет к старту программы IDLE Python Shell, как показано в верхней части рис. 4.

Редактирование и запуск программы с использованием IDLE

Рис. 4. Редактирование и запуск программы с использованием IDLE

Вы можете создать новый файл исходного кода на Python, выбрав File | New File в строке меню. Появится похожее на предыдущее отдельное окно редактора, как показано в нижней части рис. 4. Наберите в окне редактора следующие семь выражений:

После этого сохраните свою программу как test.py в любом удобном для вас каталоге. Теперь вы можете запустить ее, выбрав Run | Run Module в окне редактора или нажав клавишу F5. Вывод программы будет отображаться в окне Python Shell. Элементарно!

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

Это предполагает наличие пути к интерпретатору python.exe в вашей системной переменной окружения PATH. Вывод показывается в командной оболочке.

Интересная альтернатива IDLE иSpyder — плагин Python Tools for Visual Studio (PTVS) с открытым исходным кодом. Как и предполагает его название, PTVS позволяет редактировать и выполнять программы Python с помощью Visual Studio. Информацию о PTVS см. на microsoft.github.io/PTVS.

Демонстрационная программа для SciPy

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

Рис. 5. Типичная SciPy-программа

Демонстрационная программа начинается с двух строк комментариев:

Поскольку версии Python 2.x и 3.x не полностью совместимы, всегда неплохо явно указывать, какую версию Python вы используете. Далее демонстрация загружает весь модуль NumPy и один подмодуль SciPy:

Затем демонстрируется реализация определенной в программе функции для отображения массива:

В Python блоки кода отделяются отступами, а не фигурными скобками. Здесь я использую два пробела в качестве отступа для экономии места; большинство программистов на Python применяет по четыре пробела в качестве отступа.

Функция my_print имеет четыре параметра: массив для отображения, количество столбцов для вывода значений, число десятичных разрядов для каждого значения и флаг, указывающий, надо ли перейти на новую строку. Функция len возвращает размер массива (число ячеек в нем). Альтернатива — задействовать свойство «размер массива»:

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

Потом в демонстрации создается определенная в программе функция с именем main, которая начинается с нескольких выражений print, поясняющих решаемую задачу:

Цель — найти значения переменных x0, x1 и x2, которые удовлетворяли бы всем трем уравнениям. Слово «main» не является ключевым в Python, так что его можно было бы использовать как угодно. Наличие некоей функции main не требуется. В коротких программах (обычно менее одной страницы кода) я, как правило, обхожусь без функции main и просто начинаю с исполняемых выражений.

Далее демонстрационная программа подготавливает задачу, помещая значения коэффициентов в NumPy-матрицу 3×3 с именем A и константы в NumPy-массив с именем b:

Здесь функции matrix и array на самом деле принимают в качестве аргументов списки Python (обозначаемые квадратными скобками) с «зашитыми» в код значениями. Кроме того, вы можете создавать матрицы и массивы, используя NumPy-функцию zeros, и считывать данные из текстового файла в массив или матрицу с помощью функции loadtxt.

Если вы изучали курс алгебры, то, вероятно, помните, что для решения системы уравнений Ax = b для x, где A — квадратная матрица коэффициентов и b — матрица-столбец констант (т. е. имеет n строк и только один столбец), нужно найти матрицу, обратную A, а затем выполнить матричное перемножение обратной матрицы и матрицы-столбца b.

К этому моменту в демонстрации b является массивом с тремя ячейками, а не матрицей-столбцом 3×1. Чтобы преобразовать b в матрицу-столбец, программа использует функцию reshape:

В библиотеке NumPy много функций, способных манипулировать массивами и матрицами. Например, функция flatten преобразует матрицу в массив. Теперь, как оказалось, SciPy-функция перемножения матриц достаточно интеллектуальна, чтобы логически определить ваши намерения, если вы перемножаете матрицу и массив, поэтому вызов reshape на самом деле здесь не требуется.

Идем дальше. Демонстрационная программа отображает значения в матрицах A и b:

Демонстрационная программа находит матрицу, обратную для A:

SciPy-функция det возвращает детерминанту квадратной матрицы. Если матрица коэффициентов для системы линейных уравнений имеет детерминанту, равную нулю, эту матрицу нельзя обратить. Выражение if-else в Python должно быть знакомо вам. В Python есть изящное ключевое слово elif для управляющих конструкций if-else-if, например:

Некоторые опытные разработчики на Python критикуют IDLE за ее простоту. Но именно этим она мне и нравится.

Демонстрационная программа решает систему уравнений, используя перемножение матриц через NumPy-функцию dot:

Функция dot имеет такое название потому, что перемножение матриц является формой скалярного умножения (dot product).

После этого программа напрямую решает систему уравнений с помощью NumPy-функцииsolve:

Библиотеки NumPy и SciPy отчасти перекрывают друг друга. Например, в пакете NumPy также есть подмодуль linalg, в котором имеется функция solve. Однако NumPy-функция solve не имеет никаких необязательных параметров.

Далее демонстрационная программа показывает пример механизма try-except в Python:

Но при конкатенации строк в Python вы должны делать это явным образом с приведением, используя функцию str:

Демонстрационная программа завершается выражением print и особым заклинанием в Python:

В Python блоки кода отделяются отступами, а не фигурными скобками.

Последним выражением демонстрационной программы могло бы быть просто main(), что было бы интерпретировано как инструкция вызвать определенную в программе функцию main, и программа работала бы совершенно нормально. Добавление шаблона if __name__ == "__main__" (обратите внимание на два знака подчеркивания до и после как name, так и main) устанавливает текущий модель в качестве точки входа в программу. Когда программа на Python начинает выполнение, интерпретатор на внутреннем уровне помечает начальный модуль как:

Поэтому, допустим, что у вас есть какие-то другие определенные в программе модули с исполняемыми выражениями и что вы импортировали их. Без if-проверки интерпретатор Python увидел бы исполняемые выражения в импортированных модулях и выполнил бы их. Немного перефразируя, если вы добавляете if-проверку в свои Python-файлы, определенные в программе, эти файлы могут импортироваться другими программами на Python и это не вызовет никаких проблем.

Итак, к чему все это?

Вашей первой реакцией на эту статью вполне может быть следующее: «Что ж, все это даже интересно, но в своей повседневной работе мне не требуется решать системы линейных уравнений или использовать заумные математические функции». На это я ответил бы так: «Что ж, это правда, но, возможно, одна из причин, по которой вы не пользуетесь какой-то частью функциональности библиотеки SciPy, заключается в том, что не осознаете, какие типы задач вы можете решать».

Иначе говоря, по моему мнению, среди разработчиков прослеживается тенденция браться в основном за те задачи, для решения которых у них есть инструменты. Например, если вы знаете Windows Communication Foundation (WCF), то будете использовать WCF (и я вам сочувствую). А если вы добавите SciPy в свой личный арсенал, то, возможно, обнаружите, что у вас есть данные, которые можно превратить в полезную информацию.

Выражаю благодарность за рецензирование статьи экспертам Microsoft Дэну Либлингу (Dan Liebling) и Кирку Олинику (Kirk Olynyk).

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

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

Image result for python machine learning setup

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

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

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

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

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

При работе с чужими проектами у вас может возникнуть потребность в установке определенных версий пакетов. Виртуальные среды − решение проблемы. Они позволяют создать несколько сред, каждая из которых имеет разные версии пакетов. Базовая настройка 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. Корневая база 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. Теперь, когда у вас есть основа, пришло время начать работу с настоящими приложениями.

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