Написав ряд статей о контролируемом обучении (машинное обучение), неконтролируемом обучении (глубокое обучение) и искусственном интеллекте, окружающих реализации программирования R с алгоритмами машинного обучения; Я подумал, что было бы неплохо написать больше статей с реализацией кода Python. При обучении с учителем модель машинного обучения строится с использованием помеченных образцов. Набор данных должен быть помечен для каждого параметра, чтобы алгоритм машинного обучения определял и отображал параметры. Алгоритм машинного обучения будет рассматривать параметры как входные данные для вычислений при построении модели машинного обучения. В случае обучения без учителя маркированных данных просто нет. В крупномасштабных наборах данных есть разрозненные точки данных. Цель обучения без учителя - собрать их в несколько групп. В обучении без учителя нет заранее определенного критерия, определяемого с помощью меток для определения точек разделения. Следовательно, алгоритм неконтролируемого обучения эффективно разбивает данные на несколько фиксированных групп. В этом примере мы будем использовать контролируемое обучение. Самый простой способ работать с Python - установить дистрибутив Anaconda на Mac OS X, который поставляется с предустановленными библиотеками.

Введение и установка языка программирования Python

Программирование на Python было создано в 1991 году как язык программирования с открытым исходным кодом, который является объектно-ориентированным и интерпретируемым языком. За прошедшие годы в экосистему был встроен ряд специализированных пакетов для выполнения анализа и обработки данных, включая создание научных приложений. Для программистов, имеющих опыт работы с C ++, ABAP, Java или R, это гораздо более простой язык программирования, поскольку он объектно-ориентирован. Синтаксис чрезвычайно прост для людей с опытом программирования, особенно с объектно-ориентированными языками программирования. Он будет работать в операционных системах Linux, Mac OS без проблем. Установка довольно проста как для Mac OS X, так и для Linux OS X, следуя инструкциям из https://docs.continuum.io/anaconda/install#anaconda-for-os-x-command-line-install для Mac OS X и https://docs.continuum.io/anaconda/install#linux-install для операционной системы Linux. Управление памятью в Python считается более эффективным с минимальными затратами. В то время как язык R является специализированным языком программирования для выполнения статистического анализа и машинного обучения, Python - это, скорее, язык общего назначения. Anaconda предлагает PyQT GUI Console, консоль QT на платформе Jupyter, которую проще кодировать без необходимости писать код в отдельном текстовом файле, создавать с расширением .py и запускать файл из терминала Mac OS X или Linux. Большинство ключевых библиотек, таких как NumPy, Matplotlib, Pandas, SciPy и Scikit-learn, предустановлены в дистрибутиве Anaconda. Они работают без усилий, не требуя дополнительных пакетов установки для каждого пакета в последнем дистрибутиве Anaconda. Также рекомендуется установить PyCharm в операционной системе Mac OS, которая представляет собой полнофункциональную среду IDE для Python с функциями подсветки синтаксиса и отступов.

NumPy

Трэвис Олифант изначально создал пакет NumPy; который предоставляет многомерные массивы с рядом функций и возможностью выполнять математические функции, используя массивы с реализацией векторов и матриц. Эти массивы помогают не только хранить данные, но и эффективно векторизовать матричные операции для решения ряда загадок науки о данных. Его можно импортировать в программу с помощью команды import numpy as np.

SciPy

Эрик Джонс, Пиару Петерсон и Трэвис Олифант совместно создали пакет SciPy на языке программирования Python. Этот пакет предлагает большое количество научных алгоритмов для выполнения операций с линейной алгеброй, обработки сигналов, разреженных матриц, быстрого преобразования Фурье и оптимизации. Для более старых версий для установки пакета можно использовать pip. Если программирование Python кодируется через дистрибутив Anaconda в Mac OS X или Linux, он поставляется предустановленным, в том числе и на терминале Mac OS X, поскольку Mac OS X поставляется с предустановленным языком программирования Python.

Панды

Уэс МакКинни создал пакет Pandas на языке программирования Python. Pandas обрабатывает большую часть функций на языке программирования Python, которые не могут быть выполнены NumPy и SciPy. Пакет Pandas предоставляет широкий спектр фреймов данных, серий и конкретных структур данных объектов. Обычно он может обрабатывать сложные таблицы данных, которые не могут быть эффективно обработаны многомерными массивами NumPy, особенно для данных временных рядов. Данные могут быть загружены из разного количества каналов для визуализации данных.

Scikit-learn

Дэвид Курнапо начал создавать Scikit-learn в рамках проекта Google Summer Code в 2007 году. Где-то в 2013 году исследователи из Французского института исследований в области компьютерных наук и автоматизации взяли на себя разработку Inria. Пакет Scikit-learn предлагает различные модули для обработки данных, такие как sklearn.feature_extraction, sklearn.preprocessing. Пакет Scikit-learn также предлагает проверку модели и выбор модели с помощью sklearn.cross_validation, sklearn.grid_search и sklearn.metrics. Sklearn.linear_model предлагает ряд методов, для которых целевое значение является либо вероятностью, либо числом как линейной комбинацией входных переменных.

Matplotlib

Этот пакет был первоначально разработан Джоном Хантером с целью создания строительных блоков для визуализации данных с качественными графиками из многомерных массивов для интерактивной визуализации результатов. Его можно импортировать несколькими способами.

Генсим

Gensim - это еще один пакет, разработанный Радимом Жегуржеком для выполнения обработки естественного языка с целью анализа крупномасштабных текстовых распределений с помощью распределенных алгоритмов. Он также реализует скрытый семантический анализ и тематическое моделирование с помощью скрытого распределения Дирихле. Он также может реализовать текстовый алгоритм Google Word2vec для преобразования текстов в векторные объекты как в контролируемых, так и в неконтролируемых методах машинного обучения.

H2O

H2O.ai разработала пакет H2O, который используется несколькими языками программирования фреймворка машинного обучения, такими как R, Java, Python и Scala. Его можно запускать либо на автономном компьютере с возможностями многопроцессорной обработки, либо на кластерах Hadoop в среде AWS для горизонтального масштабирования архитектуры. Обязательным условием наличия пакета H20 является наличие установленной Java с помощью последней загрузки Java Development Kit.

XGBoost

XGBoost - это еще один пакет, который используется как распределенная библиотека повышения градиента, которая является переносимой и масштабируемой библиотекой, которую можно установить и получить доступ через R, Python, Java, Scala и C ++. Его можно реализовать на автономном компьютере с возможностью многопоточности или в кластерах Hadoop и Apache Spark.

Теано

Theano - это специальная библиотека, которая разработана и разработана для оптимизации и оценки математических выражений для многомерных массивов. Он обеспечивает основу для создания глубоких нейронных сетей. Он имеет более тесную интеграцию с пакетом NumPy. Он широко используется для поддержки проектов глубокого обучения. Имеет поддержку CuDNN. SKNN - еще одна библиотека, которую можно использовать в Python для реализации глубоких нейронных сетей. Библиотека SKNN также совместима с библиотекой Scikit-learn. Theanets - еще один пакет глубокого обучения для Python, который использует Theano для ускорения вычислений. Он взаимодействует с платформой Theano для создания моделей глубокого обучения.

Керас

Keras - это масштабируемая библиотека Python с открытым исходным кодом, которая является модульной, созданной для глубоких нейронных сетей, которая работает как с Theano, так и с TensorFlow. Установка для Python может быть реализована аналогично вышеуказанным пакетам. Поскольку Keras находится в постоянном развитии, последний файл доступен для установки на Github.

Алгоритм K-ближайших соседей

Алгоритм K-ближайших соседей - это алгоритм машинного обучения для ленивого обучающегося. Причина в том, что алгоритм запоминает данные обучения вместо того, чтобы изучать различительную функцию. Алгоритмы машинного обучения можно разделить на параметрические и непараметрические модели. Немногие алгоритмы машинного обучения, которые можно классифицировать как параметрические модели, могут быть логистической регрессией, машинами линейных опорных векторов и персептронами. Параметрические модели обычно имеют фиксированное количество параметров. Непараметрические модели не имеют фиксированного количества параметров, и рост параметров прямо пропорционален росту наборов обучающих данных. Случайные леса, классификаторы деревьев решений и машины векторов поддержки ядра можно классифицировать как непараметрические модели машинного обучения. Непараметрические модели можно подразделить на множество категорий. Одна из таких классификаций - обучение на основе экземпляров. Алгоритм K-Nearest Neighbours попадает в эту категорию, поскольку алгоритм K-Nearest Neighbors запоминает обучающий набор данных без вычисления затрат, понесенных в процессе обучения. Процедура применения алгоритма K-Nearest Neighbor следующая:

· Выбор числа K ближайшего соседа и определенной метрики расстояния путем использования ближайших точек данных в наборе данных либо с использованием евклидова расстояния, манхэттенского расстояния, расстояния Чебышева, расстояния Минковского, Вминковского, Севклидова расстояния или расстояния Махаланобиса. Эти метрики расстояния доступны в sklearn.neighbours. DistanceMetric класс.

· Программа должна определить K-ближайших соседей из набора данных.

· Голосование - это еще один процесс, при котором метки класса должны быть присвоены с использованием большинства голосов.

· Используя метрику расстояния, выбранную программой Python, алгоритм K-Nearest Neighbor обнаруживает количество k выборок, которые похожи и наиболее близки к точкам данных. Для определения метки класса каждой новой точки данных проводится большинство голосов.

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

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

· На алгоритм K-ближайших соседей влияет проклятие размерности. Следовательно, пространство объектов может становиться все более рассредоточенным и разреженным в зависимости от увеличения количества объектов и размеров в наборе данных. Следовательно, очень важно найти правильный баланс между недостаточной и чрезмерной настройкой.

Я загрузил свой код и набор данных в репозиторий Github, проверьте его на странице https://github.com/GPSingularity/Machine-Learning-in-Python

использованная литература

Анаконда (2016). Распространение Анаконды. Получено 25 декабря 2016 г. с сайта https://docs.continuum.io/anaconda/.

Джоши, П. (2016). Поваренная книга по машинному обучению Python (1-е изд.). Бирмингем, Англия: Packt Publishing.

Филлипс Д., Романо Ф., Т. Х., П. В., Чиган М. и Лейтон Р. (2016). Наука о данных с Python (1-е изд.). Бирмингем, Англия: Packt Publishing.

Сьярдин, Б., Массарон, Л., и Боскетти, А. (2016). Масштабное машинное обучение с помощью Python. Бирмингем, Англия: Packt Publishing.