Научная статья на тему 'БИБЛИОТЕКИ ЯЗЫКА PYTHONДЛЯ МАШИННОГО ОБУЧЕНИЯ, ИХ ВОЗМОЖНОСТИ И ПРЕИМУЩЕСТВА'

БИБЛИОТЕКИ ЯЗЫКА PYTHONДЛЯ МАШИННОГО ОБУЧЕНИЯ, ИХ ВОЗМОЖНОСТИ И ПРЕИМУЩЕСТВА Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
79
32
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МАШИННОЕ ОБУЧЕНИЕ / PYTHON / NUMPY / PANDAS / MATPLOTLIB / SEABORN / SCICKIT-LEARN / MACHINE LEARNING / SCIKIT-LEARN

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Фартушнов Н.С.

Данная работа может помочь понять, чем хорош язык python в машинном обучении. Синтаксис Python проще и выше уровнем по сравнению с Java, C и C++. У него живое сообщество, культура с открытым исходным кодом, сотни высококачественных библиотек, ориентированных на машинное обучение, и огромная база поддержки от гигантов в индустрии (например, Google, Dropbox, Airbnb и др.). Эта статья будет посвящена некоторым библиотекам и возможностям Python, ориентированным на машинное обучение.

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

PYTHON LANGUAGE LIBRARIES FOR MACHINE LEARNING, THEIR OPPORTUNITIES AND ADVANTAGES

This work may help to understand what python is good for in machine learning. Python syntax is simpler and higher than Java, C, and C ++. It has a vibrant community, an open-source culture, hundreds of high-quality machine learning-oriented libraries, and a huge support base from industry giants (like Google, Dropbox, Airbnb, etc.). This article will focus on some Python machine-learning libraries and features.

Текст научной работы на тему «БИБЛИОТЕКИ ЯЗЫКА PYTHONДЛЯ МАШИННОГО ОБУЧЕНИЯ, ИХ ВОЗМОЖНОСТИ И ПРЕИМУЩЕСТВА»

УДК 004

Фартушнов Н. С. студент магистратуры

2 курс

Поволжский Государственный Университет Телекоммуникаций и Информатики научный руководитель: Бахарева Н.Ф., д.т.н.

профессор Россия, г. Самара

БИБЛИОТЕКИ ЯЗЫКА PYTHON ДЛЯ МАШИННОГО ОБУЧЕНИЯ, ИХ ВОЗМОЖНОСТИ И ПРЕИМУЩЕСТВА

Аннотация: Данная работа может помочь понять, чем хорош язык python в машинном обучении. Синтаксис Python проще и выше уровнем по сравнению с Java, C и C++. У него живое сообщество, культура с открытым исходным кодом, сотни высококачественных библиотек, ориентированных на машинное обучение, и огромная база поддержки от гигантов в индустрии (например, Google, Dropbox, Airbnb и др.). Эта статья будет посвящена некоторым библиотекам и возможностям Python, ориентированным на машинное обучение.

Ключевые слова: машинное обучение,python, numpy, pandas, matplotlib, seaborn, scickit-learn.

Fartushnov N.S. master's degree student 2nd year

Povolzhskiy State University of Telecommunications and Informatics scientific supervisor: Bahareva N.F., Dr. of Engineering

professor Russia, Samara

PYTHON LANGUAGE LIBRARIES FOR MACHINE LEARNING, THEIR OPPORTUNITIES AND ADVANTAGES

Annotation: This work may help to understand what python is good for in machine learning. Python syntax is simpler and higher than Java, C, and C ++. It has a vibrant community, an open-source culture, hundreds of high-quality machine learning-oriented libraries, and a huge support base from industry giants (like Google, Dropbox, Airbnb, etc.). This article will focus on some Python machine-learning libraries and features.

Key words: machine learning, python, numpy, pandas, matplotlib, seaborn, scikit-learn.

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

1. Numpy

NumPy является основным пакетом, необходимым для высокопроизводительных научных вычислений и анализа данных в языке Python. Это основа, на которой построены почти все инструменты более высокого уровня, такие как Pandas и sckit-learning. TensorFlow использует массивы NumPy как фундаментальный строительный блок, поверх которого они строили свои объекты Tensor и графический поток для задач глубокого обучения. Многие операции NumPy реализуются в C, что делает их сверхбыстрыми. Для информатики и современных задач машинного обучения это неоценимое преимущество. Возможности библиотеки представлен на рис. 1.

Numpy Cheat Sheet

Numpy (Numerical Python)

Numpy (Numerical Python)

What is NumPy?

Foiiidation pacuge tor scientific computing m Python Why NumPy?

• Numpy 'ndarray' is a much more efficient way of siorrg and manipulating "numerical data" than the budt-lri Python data structures.

• Uxanes written in lower-level languages, such as C. can operate on data stored In Numpy 'ndarray' without copying any data.

N-DIMENSIONAL ARRAY (NDARRAY)

What la NdArray?

Fast and space-effoenl multidimensional array (container lor homogeneous data) providing vactonnd arithmetic operations

2, np.ones 12. 3)

3, np.«pty(3, «, 5> # three dimensonel -idaray of

Setting data with assignment

I octetrayltndarrayl < 0] - 0 *

H ndefray! ■ two-dlmansons, ndarrayi < 0 creates a two-dimensional boctoan array

COMMON OPERATIONS

1 Transposing

• A special form of reshaping which returns a 'view' on the underlying data without copying anythmg.

SUCING (INDEXING/SUBSETTING)

1 S>cing(le. r.darroyl:2:Sl)aa'vlew'on the origmal array Data is NOT copied Any motivations (I e ndarrayl [2: si - a) to the 'view' will be reflected in the original array 1 Instead of a 'view', explicit copy of stong ma ; darrayl(2:61.copyl)

1 Multidimensional array indexing notation

ndarrayl|0](2] OTndarrayllO, 2] I

# f means seied from 3rd column or

Setocting data by boolean rdexlng ALWAYS creates a oopy of the data.

The 'and' and 'or" Keywords do NOT wort with boolean arrays Use & and |.

* Fancy indexing |aka indexing using integer arrays') Select a subset of rows in a particiiar order

I ndarray;1 13, 8, 4] ¡ I ndarraylJ [-1, C) ]

# negative indices select rows from the end

Fancy indexing ALWAYS create* a copy of the data

irt (scqi : » any seouence (list y. etc) to return a nsarray

I. Vectorized expressions

• np. where {cond, x, y i is a vectorized verson of the expression 'x if condition else /

p.wtier* liMf г i xAr-лу > 0, 1, » a new array (same shape) of1 or -1 *

Example usage is find the first etement that has a "price > number' In an array of price data

Compute mean ndarrayl .mean О 0Г

np.mean(ndarrayl)

Compute statisli cs ndarrayl-mean(axis » X)

over axis • ndarrayl.sun(axia - 01

5 Boolean arrays methods

Count» of'True«' in boolean array (ndarrayl > 0).aua()

If at least one value is True' ndarrayl.any()

If all values are True' ndarrayl.all()

1 Note: These meffx I arrays, »tiers non-i Ms also work with non-boolean ero elements evaluate to True

6. Sorting

Inplace sorting ndarrayl. aortO

Return a sorted copy л siaad of inplace aortedl - np.sort(ndarrayl )

7 Set methods

Return sorted яр.unique(r.darrayll unique values

Test membership of ndarrayl values in (Z 3,6) reeultBoolaanArray -np.lnld(ndarrayl, (2, 3, «II

• Other set methods lntraoctldli.unicnldO, oatdif f Id 1 > ■ aetKorld (I

8. Random number generation (np random) • Supplements the built-in Python random * with functions tor efficiently generating wtiole arrays of sample values from many kinds of probability ttstrtbutions

1 aanplee-np . rarden. rcroel (elie -(3, 3)) 1

I . Python built-in random ONLY samples one value at a time.

Created by Ariorme Cotton and Sean Chen wrtvw.datasciencefree.com Based on content from 'Python for Data Analysis' by Wes McOnney

Updated: August 18.2016

Рис. 1 - Возможности библиотеки NumPy

2. Pandas

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

— Чтение/запись множества различных форматов данных

— Выбор подмножеств данных

— Расчет по строкам и столбцам вниз

— Поиск и заполнение отсутствующих данных

— Применение операций к независимым группам в данных

— Преобразование данных в различные формы

— Совмещение нескольких наборов данных

— Расширенные функциональные возможности временных рядов

— Визуализация через Matplotlib и Seaborn

На рис. 2 показаны возможности данной библиотеки.

Рис. 2 - Возможности библиотеки Pandas

3. Matplotlib и Seaborn

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

Matplotlib является наиболее широко используемой библиотекой визуализации 2-D Python, оснащенной богатым набором команд и интерфейсов для создания высококачественной графики из имеющихся данных. Ниже представлены графики построенные с помощью Matplotlib (рис. 3).

Figure 1 □ * ouvnr » ¡ R I <nwpto«ib. togo-py

« + + q в (ииян^вн^н

Рис. 3 - Графики построенные с помощью библиотеки Matplotlib

Seaborn - это еще одна отличная библиотека визуализации, ориентированная на статистическую печать. Seaborn предоставляет API (с гибким выбором стиля печати и цветов по умолчанию) поверх Matplotlib, определяет простые функции высокого уровня для общих статистических типов печати и интегрируется с функциональностью, обеспечиваемой Pandas (рис. 4).

Example of Seaborn plots

Рис. 4 - Примеры графиков Seaborn

4. Scickit-learn

Scickit-learn - самый важный общий пакет машинного обучения Python, который вы должны освоить. Он имеет различные алгоритмы классификации, регрессии и кластеризации, включая вспомогательные векторные машины, случайные леса, повышение градиента, k-средства и DBSCAN, и предназначен для взаимодействия с числовыми и научными библиотеками Python, NumPy и SciPy. Он предоставляет ряд контролируемых и без контроля алгоритмов обучения через последовательный интерфейс. Различные

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

Некоторые скрытые возможности Scickit-learn.

Scickit-learn - отличный пакет для обучения начинающим и опытным специалистам. Однако даже опытные специалисты по ML могут быть не осведомлены обо всех скрытых возможностях этого пакета, которые могут существенно помочь в выполнении их задачи. Я попытаюсь перечислить несколько из этих относительно менее известных методов/интерфейсов, доступных в Scickit-learn.

Pipeline: Может быть использован для преобразования цепочки нескольких оценок в одну. Это полезно, так как часто существует фиксированная последовательность шагов при обработке данных, например, выбор признаков, нормализация и классификация.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Grid-search: Hyper-parameters - это параметры, которые непосредственно не изучаются в оценщиках. В Scickit-learn они передаются в качестве аргументов конструктору классов оценщика. Можно и рекомендуется искать наилучший балл перекрестной проверки в пространстве гиперпараметров. Любой параметр, предоставляемый при построении устройства оценки, может быть оптимизирован таким образом.

Кривые валидации: Каждый оценщик имеет свои преимущества и недостатки. Ошибка обобщения может быть разложена в терминах смещения, дисперсии и шума. Отклонением оценщика является его средняя ошибка для различных наборов обучения. Отклонение оценщика показывает, насколько он чувствителен к различным наборам учебных материалов. Шум является свойством данных. Очень полезно построить график влияния одного гиперпараметра на балл обучения и балл проверки, чтобы выяснить, является ли оценка избыточной или недостаточной для некоторых значений гиперпараметра. Scickit-learn имеет встроенный метод для этого (рис. 5).

Рис. 5 - Построенные кривые валидации

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

"один в k" для использования в задачах классификации или прогнозирования (например, логистическая регрессия со смешанными числовыми и текстовыми признаками). Scickit-learn предлагает мощные, но простые методы для достижения этой цели. Они работают непосредственно на массивах Pandas dataframe или Numpy, тем самым освобождая пользователя для записи любой специальной функции map/apply для этих преобразований.

Генерация полиномиальных элементов: для бесчисленных задач регрессионного моделирования. Часто полезно усложнять модель, рассматривая нелинейные элементы входных данных. Простой и распространенный метод - полиномиальные особенности, которые могут получить термины высокого порядка и взаимодействия элементов. Scickit -learn имеет готовую функцию для генерации таких перекрестных терминов более высокого порядка из заданного набора признаков и выбора пользователем высшей степени полинома.

Генераторы наборов данных: Scickit-learn включает в себя различные генераторы случайных выборок, которые могут быть использованы для построения искусственных наборов данных контролируемого размера и сложности. Он имеет функции для классификации, кластеризации, регрессии, декомпозиции матрицы и многокомпонентного тестирования (рис. 6).

Orte informative feature, one Cluster per class Two informative features, one Cluster per class

о • О® . о ° ^ о * • • ® i ! • • •«•• О о ЬЧ«0® V'.v • 1 0 -1 ■ -2 Л*?' 4 t Ч** 0£> Л" • ■ ♦ °o

-2 -1 0 Г wo informative features, Ыо 1 2 clusters per class -3-2-10 1 2 Multi-class, two informative features, one cluster

о" О о А °0 о 0 5« 0 • _ О О о 1 « • ? - ч о о ооо о ° о 2 1 0 -1 -2 ee oOQ"OO

-3 -2 -1 0 Three blobs 1 2 -2-10 1 Gaussian divided into three quantiles

. J ф' '■ISA ' О 2 ■ 1 0-1 ■ -2 о о 43® ° .4®»°» °° „ Jp о 0 о 0 ° о о V О о

-7.5 -5.0 -2.5 0.0 2.5 5.0 -1 0 1 2

Рис. 6 - Графики кластеризации

5. Практика интерактивного машинного обучения

Проект Jupyter родился из проекта Шу^п в 2014 году и быстро развивался для поддержки интерактивной науки данных и научных вычислений на всех основных языках программирования. Нет сомнений, что это сильно повлияло на то, как специалист по данным может быстро протестировать и прототипировать свою идею и продемонстрировать работу сверстникам и сообществу с открытым исходным кодом.

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

параметры модели и видеть эффект (почти) в реальном времени. Большинство распространенных визуализаций в Jupiter являются статическими.

Но если вы хотите больше управления, вы хотите изменить переменные простым нажатием на кнопку мыши, тогда можно использовать виджет IPython.

Виджеты - это насыщенные событиями объекты питона, которые имеют представление в браузере, часто в виде элемента управления, такого как ползунок, текстовое поле и т.д., через внешний (HTML/JavaScript) канал визуализации.

Использованные источники:

1. Иванов, В.М. Интеллектуальные системы : учебное пособие / В.М. Иванов. — Екатеринбург : Изд-во Урал. ун-та, 2015. — 92 с.

2. Остроух, А.В. Интеллектуальные информационные системы и технологии: Монография / А.В. Остроух, Н.Е. Суркова. - Красноярск: Научно-инновационный центр, 2015. - 370 с.

3. Вьюгин, В.В. Математические основы машинного обучения и прогнозирования: учебное пособие / В.В. Вьюгин. — Москва: 2013. — 387 с.

i Надоели баннеры? Вы всегда можете отключить рекламу.