Вступление
Нет сомнений в том, что нейронные сети и машинное обучение в целом были одной из самых горячих тем в сфере технологий в последние несколько лет или около того. Легко понять, почему они решают все действительно интересные варианты использования, такие как распознавание голоса, распознавание изображений или даже музыкальная композиция . Итак, для этой статьи я решил составить список некоторых из лучших библиотек машинного обучения Python и разместил их ниже.
На мой взгляд, Python - один из лучших языков, которые вы можете использовать для изучения (и реализации) методов машинного обучения по нескольким причинам:
- Все просто : Python теперь становится языком выбора среди начинающих программистов благодаря простому синтаксису и огромному сообществу.
- Это мощно : просто потому, что что-то просто, не значит, что оно не способно. Python также является одним из самых популярных языков среди специалистов по данным и веб-программистов. Его сообщество создало библиотеки, чтобы делать все, что вы хотите, включая машинное обучение.
- Много библиотек ML: Есть тонны машинного обучения библиотек уже написанные на Python. Вы можете выбрать одну из сотен библиотек в зависимости от вашего сценария использования, навыков и потребностей в настройке.
Последний пункт здесь, пожалуй, самый важный. Алгоритмы, лежащие в основе машинного обучения, довольно сложны и включают в себя много математики, поэтому написать их самостоятельно (и сделать все правильно ) будет самой сложной задачей. К счастью для нас, есть много умных и преданных делу людей, которые проделали за нас эту тяжелую работу, чтобы мы могли сосредоточиться на нашем приложении.
Это далеко не исчерпывающий список. Там много кода, и я публикую здесь только некоторые из наиболее актуальных или известных библиотек. Теперь перейдем к списку.
Самые популярные библиотеки
Я включил краткое описание некоторых из наиболее популярных библиотек и того, для чего они нужны, с более полным списком известных проектов в следующем разделе.
TensorFlow
Это новейшая библиотека нейронных сетей в списке. TensorFlow - это библиотека нейронной сети высокого уровня, которая была выпущена за последние несколько дней и которая помогает вам программировать вашу сетевую архитектуру, избегая при этом низкоуровневых деталей. Основное внимание уделяется тому, чтобы вы могли выразить свои вычисления в виде графа потока данных, который гораздо больше подходит для решения сложных проблем.
Он в основном написан на C ++, который включает привязки Python, поэтому вам не нужно беспокоиться о снижении производительности. Одна из моих любимых функций - гибкая архитектура, которая позволяет развертывать ее на одном или нескольких процессорах или графических процессорах на настольном компьютере, сервере или мобильном устройстве с одним и тем же API. Не многие библиотеки, если таковые имеются, могут сделать это.
Он был разработан для проекта Google Brain и сейчас используется сотнями инженеров по всей компании, поэтому нет никаких сомнений в том, что он способен создавать интересные решения.
Как и в случае с любой другой библиотекой, вам, вероятно, придется потратить некоторое время на изучение ее API, но потраченное время того стоит. В течение первых нескольких минут игры с основными функциями, я уже мог сказать, что TensorFlow позволит мне тратить больше времени на реализацию дизайна моей сети, а не на борьбу через API.
Если вы хотите узнать больше о TensorFlow и нейронных сетях, попробуйте пройти такой курс, как Deep Learning with TensorFlow{.udemy-link} , который научит вас не только TensorFlow, но и многим методам глубокого обучения.
- Подходит для: нейронных сетей.
- Книга: TensorFlow для глубокого обучения{.amazon-link}
- Веб-сайт
- Github
scikit-learn
Библиотека scikit-learn определенно является одной из, если не самой, популярной библиотекой машинного обучения среди всех языков (на момент написания этой статьи). Он имеет огромное количество функций для интеллектуального анализа и анализа данных, что делает его лучшим выбором как для исследователей, так и для разработчиков.
Он построен на основе популярных библиотек NumPy, SciPy и matplotlib, поэтому он будет знаком многим людям, которые уже используют эти библиотеки. Хотя по сравнению со многими другими библиотеками, перечисленными ниже, эта библиотека находится на более низком уровне и, как правило, служит основой для многих других реализаций машинного обучения.
Учитывая, насколько мощна эта библиотека, может быть трудно начать с ней, если у вас нет хорошего ресурса. Один из наиболее популярных ресурсов, который я видел, - это Python for Data Science and Machine Learning Bootcamp{.udemy-link} , который хорошо объясняет, как реализовать многие методы машинного обучения в scikit-learn.
Theano
Theano - это библиотека машинного обучения, которая позволяет определять, оптимизировать и оценивать математические выражения, включающие многомерные массивы, что может вызвать разочарование у некоторых разработчиков в других библиотеках. Как и scikit-learn, Theano также тесно интегрируется с NumPy. Прозрачное использование графического процессора делает установку Theano быстрой и безболезненной, что очень важно для тех, кто только начинает. Хотя некоторые описывают его как скорее инструмент исследования, чем использование в производстве, поэтому используйте его соответствующим образом.
Одна из его лучших функций - отличная документация и множество руководств. Благодаря популярности библиотеки у вас не будет особых проблем с поиском ресурсов, которые покажут вам, как настроить и запустить свои модели.
- Подходит для: нейронных сетей и глубокого обучения.
- Подробнее: Практическое глубокое обучение в Theano + TensorFlow{.udemy-link}
- Веб-сайт
- Github
Pylearn2
Большая часть функциональности Pylearn2 на самом деле построена на основе Theano, поэтому у него довольно прочная основа.
Согласно веб-сайту Pylearn2:
Pylearn2 отличается от scikit-learn тем, что Pylearn2 стремится обеспечить большую гибкость и дать возможность исследователю делать практически все, в то время как scikit-learn работает как «черный ящик», который может давать хорошие результаты, даже если пользователь этого не делает. понять реализацию.
Имейте в виду, что Pylearn2 может иногда обертывать другие библиотеки, такие как scikit-learn, когда это имеет смысл, поэтому вы не получите здесь 100% написанный специально код. Однако это замечательно, поскольку большинство ошибок уже устранено. Такие обертки, как Pylearn2, занимают очень важное место в этом списке.
Pyevolve
Одна из наиболее интересных и разнообразных областей исследования нейронных сетей - это область генетических алгоритмов. Генетический алгоритм - это просто эвристика поиска, имитирующая процесс естественного отбора. По сути, он тестирует нейронную сеть на некоторых данных и получает обратную связь о производительности сети от фитнес-функции. Затем он итеративно вносит небольшие случайные изменения в сеть и приступает к ее повторному тестированию с использованием тех же данных. Сети с более высокими показателями пригодности побеждают и затем используются как родительские для новых поколений.
Pyevolve предоставляет отличную основу для создания и выполнения такого рода алгоритмов. Хотя автор заявил, что с v0.6 фреймворк также поддерживает генетическое программирование, поэтому в ближайшем будущем фреймворк будет больше склоняться к тому, чтобы стать фреймворком эволюционных вычислений, чем просто фреймворком GA.
- Подходит для: нейронных сетей с генетическими алгоритмами.
- Github
NuPIC
NuPIC - это еще одна библиотека, которая предоставляет вам несколько функций, отличных от стандартных алгоритмов машинного обучения. Он основан на теории неокортекса, называемой иерархической временной памятью (HTM). HTM можно рассматривать как тип нейронной сети, но некоторые теории немного отличаются.
По сути, HTM - это иерархическая система памяти, основанная на времени, которую можно обучать на различных данных. Это новая вычислительная структура, имитирующая переплетение памяти и вычислений в нашем мозгу. Полное объяснение теории и ее приложений можно найти в техническом документе .
- Подходит для: HTM
- Github
Шаблон
Это скорее библиотека «полного набора», поскольку она предоставляет не только некоторые алгоритмы машинного обучения, но и инструменты, которые помогут вам собирать и анализировать данные. Часть интеллектуального анализа данных помогает вам собирать данные из веб-сервисов, таких как Google, Twitter и Wikipedia. Он также имеет поисковый робот и парсер HTML DOM. Приятным моментом включения этих инструментов является то, насколько легко они позволяют собирать и обучать данные в одной программе.
Вот отличный пример из документации, в котором используется набор твитов для обучения классификатора тому, является ли твит «победным» или «неудачным»:
from pattern.web import Twitter
from pattern.en import tag
from pattern.vector import KNN, count
twitter, knn = Twitter(), KNN()
for i in range(1, 3):
for tweet in twitter.search('#win OR #fail', start=i, count=100):
s = tweet.text.lower()
p = '#win' in s and 'WIN' or 'FAIL'
v = tag(s)
v = [word for word, pos in v if pos == 'JJ'] # JJ = adjective
v = count(v) # {'sweet': 1}
if v:
knn.train(v, type=p)
print knn.classify('sweet potato burger')
print knn.classify('stupid autocorrect')
Сначала твиты собираются с помощью twitter.search()
через хэштеги
«#win» и «#fail». Затем k-ближайший сосед (KNN) обучается с
использованием прилагательных, извлеченных из твитов. После достаточного
обучения у вас есть классификатор. Неплохо всего для 15 строк кода.
- Подходит для: NLP, кластеризации и классификации.
- Github
Кафе
Caffe - это библиотека для машинного обучения в приложениях машинного зрения. Вы можете использовать его для создания глубоких нейронных сетей, которые распознают объекты на изображениях или даже для распознавания визуального стиля .
Предлагается бесшовная интеграция с обучением на графическом процессоре, что настоятельно рекомендуется при обучении на изображениях. Хотя эта библиотека, по-видимому, предназначена в основном для ученых и исследователей, у нее также должно быть множество применений для учебных моделей для производственного использования.
Другие известные библиотеки
А вот список довольно многих других библиотек Python ML. Некоторые из них предоставляют те же функции, что и вышеперечисленные, а другие имеют более узкие цели или больше предназначены для использования в качестве инструментов обучения.
Nilearn
- Создан на основе scikit-learn
- Github
Статистические модели
PyBrain (неактивен)
Топливо
Боб
skdata
МОЛОКО
IEPY
Quepy
Hebel
mlxtend
не учиться
Рампа
Feature Forge
REP
Python-ELM
PythonXY
XCS
PyML
MLPY (неактивен)
апельсин
Монте
PYMVPA
MDP (неактивен)
Сёгун
PyMC
Gensim
Neurolab
FFnet (неактивен)
LibSVM
Мята
Chainer
топик
Краб
CoverTree
Breze
- По мотивам Теано
- Github