Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LXXIII Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 17 января 2019 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Шафигуллина А.Р. МОДУЛЬНЫЙ ИНСТРУМЕНТАРИЙ ДЛЯ ОБРАБОТКИ ДАННЫХ: ПЛАТФОРМА ОБРАБОТКИ ДАННЫХ PYTHON // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. LXXIII междунар. студ. науч.-практ. конф. № 1(72). URL: https://sibac.info/archive/technic/1(72).pdf (дата обращения: 20.04.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
Диплом Выбор редакционной коллегии

МОДУЛЬНЫЙ ИНСТРУМЕНТАРИЙ ДЛЯ ОБРАБОТКИ ДАННЫХ: ПЛАТФОРМА ОБРАБОТКИ ДАННЫХ PYTHON

Шафигуллина Алия Рашидовна

студент 3 курса, кафедра автоматизированных систем управления УГАТУ,

РФ, Уфа

Аннотация. Модульный инструментарий для обработки данных (англ. Modular toolkit for Data Processing, MDP) является пакетом для анализа данных. Библиотека содержит метод главных компонент, метод нелинейного итерационного проецирования при помощи чередующихся наименьших квадратов, метод локального линейного вложения, метод слепого разделения источников и множество других. Особенность библиотеки заключается в том, что все алгоритмы инкапсулируются в классы (узлы в терминологии MDP) с общим интерфейсом, что позволяет объединять их в последовательности обработки данных (потоки). MDP может быть полезен в любой сфере, где используются обучаемые алгоритмы обработки данных. Простота в использовании для пользователей, разнообразие легко доступных алгоритмов и многократное использование реализованных блоков делают его также полезным образовательным инструментом.

Ключевые слова: Python, обработка данных, машинное обучение.

 

1. Введение

Развитие двух важных проектов с открытым исходным кодом, библиотек NumPy и SciPy [1, с. 6], открывает доступ к большой коллекции научных функций, которые по размеру и скорости конкурируют с хорошо известными коммерческими альтернативами, такими как The MathWorks™ [2, с. 6] и Matlab® [3, с. 6]. Кроме того, гибкая и динамичная природа Python [4, с. 6] предоставляет программисту возможность быстро разрабатывать эффективное и структурированное программное обеспечение, максимально увеличивая возможности прототипирования и повторного использования. Пакет модульного инструментария для обработки данных (MDP) [5, с. 6] предоставляет сообществу библиотеку широко используемых алгоритмов обработки данных, а также возможность комбинировать их по аналогии с конвейером для создания более сложного программного обеспечения для обработки данных. С точки зрения пользователя, MDP состоит из набора контролируемых и неконтролируемых алгоритмов обучения, а также других блоков обработки данных (узлов), которые могут быть объединены в последовательности обработки данных (потоки) и более сложные сетевые архитектуры с прямой связью. Учитывая набор входных данных, MDP обеспечивает последовательное обучение или выполнение всех узлов в сети. Это позволяет пользователю естественным образом задавать сложные алгоритмы в виде последовательности простых шагов обработки данных. База доступных алгоритмов постоянно увеличивается и включает, среди прочего, анализ основных компонентов (PCA) [6, с. 6], несколько независимых алгоритмов анализа компонентов (JADEC, TDSEP) [7, с. 6], локально линейное вложение, анализ медленных признаков, классификаторы Гаусса, линейный дискриминант Фишера, факторный анализ и ограниченную машину Больцмана. Особое внимание уделяется эффективности вычислений с точки зрения скорости и памяти. Чтобы уменьшить требования к памяти, можно выполнять обучение с использованием пакетов данных и определять внутренние параметры узлов с одинарной точностью, что делает возможным использование очень больших наборов данных. Более того, пакет MDP на заключительных этапах разработки предлагает параллельную реализацию базовых узлов и потоков. С точки зрения разработчика, MDP – это платформа, которая упрощает реализацию новых алгоритмов контролируемого и неконтролируемого обучения. Базовый класс, Node, обеспечивает выполнение рутинных задач, таких как проверка числового типа и размерности, предоставляя разработчику возможность сконцентрироваться на реализации этапов обучения и выполнения.

Благодаря общему интерфейсу, узел автоматически интегрируется с остальной частью библиотеки и может использоваться в сети вместе с другими узлами. Узел может иметь несколько фаз обучения и даже неопределенное количество фаз. Это позволяет реализовать алгоритмы, которые должны собирать некоторую статистику в целом, прежде чем приступить к фактическому обучению, и другие, которые должны выполнять итерации по этапу обучения, пока не будет удовлетворен критерий сходимости. MDP распространяется по лицензии LGPL [8, с. 6] с открытым исходным кодом. MDP был написан в рамках теоретических исследований в области неврологии, но был разработан для применения в любых областях, где используются обучаемые алгоритмы обработки данных. Его простота для пользователя вместе с возможностью повторного использования реализованных узлов делают его так же полезным образовательным инструментом.

2. Структура пакета

Платформа MDP состоит из библиотеки узлов обработки данных с общим программным интерфейсом приложения (API) и набора объектов, которые используются для соединения узлов для реализации сложных процессов обработки данных.

Узлы

Узел является основным строительным блоком приложения MDP. Он представляет элемент обработки данных, например, алгоритм обучения, фильтр данных или этап визуализации. Каждый узел характеризуется входным измерением (то есть размерностью входных векторов), выходным измерением и типом данных, который определяет числовой тип внутренних структур и выходного сигнала. По умолчанию эти атрибуты наследуются от входных данных.

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

Потоки

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

Объекты потока определяются как контейнеры Python и, следовательно, наделены большинством методов списков Python: можно получать фрагменты, добавлять новые узлы, удалять узлы по указанному индексу, вставлять узлы и объединять потоки. Класс Flow (Поток) определяет ряд служебных методов, включая методы сохранения и копирования. Он также реализует механизм восстановления после сбоя: если во время обучения выдается исключение, текущее состояние потока сохраняется для последующей проверки.

Иерархические сети

В случае, если требуемое приложение для обработки данных не может быть определено как последовательность узлов, подпакет hinet позволяет создавать произвольные архитектуры прямой связи и, в частности, иерархические сети. Он содержит три основных строительных блока (которые сами являются узлами): Layer, FlowNode и Switchboard. Первый строительный блок, Layer, работает как горизонтальная версия потока. Он действует как оболочка для набора узлов, которые обучаются и выполняются параллельно. Например, мы можем объединить два узла со 50-мерным вводом, чтобы создать слой с 100-мерным вводом. Первая половина 100-мерных входных данных затем автоматически присваивается первому узлу, вторая – второму узлу. Мы можем обучать и выполнять слой так же, как и любой другой узел. Чтобы иметь возможность создавать произвольные структуры узлов прямой связи, hinet предоставляет класс-оболочку для потоков (то есть вертикальных стеков узлов), называемый FlowNode. Комбинируя и вкладывая FlowNode и Layer, можно создавать сложные структуры узлов.

При реализации сетей может потребоваться сложная маршрутизация разных частей данных на разные узлы слоя. Это делается узлом коммутатора, который может обработать такую маршрутизацию. Коммутатор инициализируется одномерным массивом с одной записью для каждого выходного соединения, содержащей соответствующий индекс входного соединения. За коммутатором может следовать слой, который разделяет маршрутизируемые входные данные на соответствующие узлы. Поскольку построение и отладка иерархических сетей может оказаться довольно сложной задачей, hinet включает класс HiNetHTML, который представляет поток MDP в виде графических элементов в HTML-файле (Рисунок 1).

 

Рисунок 1. Пример топологии сети с прямой связью

 

3. Заключение

Со времени своего первого выпуска в 2004 году MDP стал одним из основных научных пакетов Python. Пакет имеет минимальные зависимости, требующие только числового расширения NumPy, полностью независим от платформы и доступен в дистрибутиве Linux Debian и в дистрибутиве Python(x,y). MDP использовался для реализации модели визуальной системы виртуальной крысы, перемещающейся в виртуальной среде [9, c. 6], для распознавания образов [10, с. 6] и распознавания рукописных цифр [11, с. 6]. MDP также использовался в составе пакета рентгеновского флуоресцентного картирования PyMCA [12, с. 6].

 

Список литературы:

  1. SciPy and NumPy, Eli Bressert, ISBN-13:978-1-449-30546-8, 2012 – 57 с
  2. Веб-сайт компании MathWorks, URL: https://www.mathworks.com/ (дата обращения: 11.01.2019)
  3. A Guide to MATLAB: For Beginners and Experienced Users, Brian R. Hunt, ‎Ronald L. Lipsman, ‎Jonathan M. Rosenberg, ISBN-13:978-0521615655, 2006 – 311 c
  4. Материал из Википедии — свободной энциклопедии, Python, URL: https://ru.wikipedia.org/wiki/Python (дата обращения: 11.01.2019)
  5. Веб-сайт MDP, URL: http://mdp-toolkit.sourceforge.net/ (дата обращения: 11.01.2019)
  6. Introduction to multivariate calibration in analytical chemistry, Richard G. Brereton, Analyst, 2000, 125, 2125–2154
  7. Материал из Википедии — свободной энциклопедии, Анализ независимых компонент, URL: https://ru.wikipedia.org/wiki/Анализ_независимых_компонент (дата обращения: 11.01.2019)
  8. Материал из Википедии — свободной энциклопедии, Лицензия GNU LGPL, URL: https://ru.wikipedia.org/wiki/GNU_Lesser_General_Public_License (дата обращения: 11.01.2019)
  9. PLoS Comput Biol, Franzius et al., 2007 Aug; 3(8): e166, Published online 2007 Aug 31. doi: 10.1371/journal.pcbi.0030166
  10. Invariant Recognition of Visual Objects, Evgeniy Bart, Jay Hegdé, URL: https://books.google.ru/books?id=z1XOdbnYSskC&pg=PA143&lpg=PA143&dq=Franzius+2007+pattern+recognition&source=bl&ots=tDzbGyPOXz&sig=yAmnPbXnnwzvw29Xd1RPTttrl1Q&hl=ru&sa=X&ved=2ahUKEwi12u2cmeTfAhVFCCwKHQseDAQQ6AEwDXoECAIQAQ (дата обращения: 11.01.2019)
  11. Handwritten digit recognition with Nonlinear Fisher Discriminant Analysis, Pietro Berkes, URL: https://pdfs.semanticscholar.org/f02b/d2db125414eafc5d3cbb9f3a8c64e3c0aef7.pdf (дата обращения: 11.01.2019)
  12. A multiplatform code for the analysis of energy-dispersive X-ray fluorescence spectra, V.A. Solé, 202006, URL: http://archenv.geo.uu.nl/pdf/Sole%202006.pdf (дата обращения: 11.01.2019)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
Диплом Выбор редакционной коллегии

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

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.