Рубрики
Без рубрики

Лучшие библиотеки машинного обучения в Python

Автор оригинала: Scott Robinson.

Лучшие библиотеки машинного обучения в Python

Вступление

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

На мой взгляд, Python-один из лучших языков, который вы можете использовать для изучения (и реализации) методов машинного обучения по нескольким причинам:

  • Это просто : Python теперь становится языком выбора среди новых программистов благодаря своему простому синтаксису и огромному сообществу
  • Это мощно : Просто потому, что что-то простое, не означает, что оно не способно. Python также является одним из самых популярных языков среди специалистов по обработке данных и веб-программистов. Его сообщество создало библиотеки, чтобы делать практически все, что вы хотите, включая машинное обучение
  • Много библиотек ML : Есть тонны библиотек машинного обучения, уже написанных для Python. Вы можете выбрать одну из сотен библиотек в зависимости от вашего варианта использования, навыков и потребности в настройке.

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

Это далеко не полный список. Там есть много кода, и я публикую здесь только некоторые из наиболее релевантных или хорошо известных библиотек. Теперь перейдем к списку.

Самые Популярные Библиотеки

Я включил краткое описание некоторых наиболее популярных библиотек и того, для чего они хороши, с более полным списком известных проектов в следующем разделе.

Тензорный поток

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

Он в основном написан на C++, который включает в себя привязки Python, так что вам не нужно беспокоиться о потере производительности. Одна из моих любимых функций-гибкая архитектура, которая позволяет развертывать ее на одном или нескольких процессорах или графических процессорах на настольном компьютере, сервере или мобильном устройстве с одним и тем же API. Не многие, если вообще есть, библиотеки могут сделать такое заявление.

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

Как и любая библиотека, вам, вероятно, придется посвятить некоторое время изучению ее API, но потраченное время должно того стоить. В течение первых нескольких минут игры с основными функциями я уже мог сказать, что TensorFlow позволит мне тратить больше времени на реализацию моих сетевых проектов и не бороться через API.

Если вы хотите узнать больше о TensorFlow и нейронных сетях, попробуйте пройти курс типа Deep Learning with TensorFlow , который расскажет вам не только о TensorFlow, но и о многих методах глубокого обучения.

scikit-учись

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

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

Учитывая, насколько мощна эта библиотека, может быть трудно начать работу с ней, если у вас нет хорошего ресурса. Одним из наиболее популярных ресурсов , которые я видел, является Python for Data Science and Machine Learning Bootcamp , который хорошо объясняет, как реализовать многие методы ML в scikit-learn.

Теано

Theano-это библиотека машинного обучения, которая позволяет определять, оптимизировать и оценивать математические выражения, включающие многомерные массивы, что может быть причиной разочарования для некоторых разработчиков в других библиотеках. Как и scikit-learn, Theano также тесно интегрируется с NumPy. Прозрачное использование графического процессора делает настройку Theano быстрой и безболезненной, что очень важно для тех, кто только начинает работать. Хотя некоторые описывают его как скорее исследовательский инструмент, чем производственный, поэтому используйте его соответственно.

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

Pylearn2

Большая часть функциональности Pylearn2 на самом деле построена поверх Theano, поэтому она имеет довольно прочную основу.

По данным сайта Pylearn2:

Pylearn2 отличается от scikit-learn тем, что Pylearn2 стремится обеспечить большую гибкость и дать возможность исследователю делать практически все, что угодно, в то время как scikit-learn стремится работать как “черный ящик”, который может давать хорошие результаты, даже если пользователь не понимает реализации.

Имейте в виду, что Pylearn2 иногда может обернуть другие библиотеки, такие как scikit-learn, когда это имеет смысл сделать, так что вы не получаете 100% написанный на заказ код здесь. Однако это здорово, так как большинство ошибок уже были отработаны. Обертки, такие как Pylearn2, занимают очень важное место в этом списке.

Pyevolve

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

Pyevolve предоставляет отличный фреймворк для создания и выполнения такого рода алгоритмов. Хотя автор заявил, что начиная с версии v0.6 фреймворк также поддерживает генетическое программирование, поэтому в ближайшем будущем фреймворк будет больше склоняться к тому, чтобы быть эволюционным вычислительным фреймворком, чем просто простым фреймворком GA.

  • Хорошо подходит для: Нейронных сетей с генетическими алгоритмами
  • Github

NuPIC

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

По сути, HTM-это иерархическая, основанная на времени система памяти, которая может быть обучена различным данным. Предполагается, что это новая вычислительная структура, которая имитирует то, как память и вычисления переплетаются в нашем мозге. Для полного объяснения теории и ее приложений ознакомьтесь с белой книгой .

  • Хорошо подходит для: HTMs
  • Github

Шаблон

Это скорее библиотека “полного набора”, поскольку она предоставляет не только некоторые алгоритмы ML, но и инструменты для сбора и анализа данных. Часть интеллектуального анализа данных помогает вам собирать данные из таких веб-сервисов, как Google, Twitter и Википедия. Он также имеет веб-искатель и 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 строк кода.

  • Хорошо подходит для: НЛП, кластеризации и классификации
  • Github

Кофе

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

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

  • Хорошо подходит для: Нейронных сетей/глубокого обучения для зрения
  • Вебсайт
  • Github

Другие Известные Библиотеки

А вот список довольно многих других библиотек Python ML. Некоторые из них обеспечивают ту же функциональность, что и вышеприведенные, а другие имеют более узкие цели или больше предназначены для использования в качестве инструментов обучения.

Нилеарн

  • Построенный на вершине scikit-learn
  • Github

Статс-модели

    Github

PyBrain (неактивен)

    Github

Топливо

    Github

Боб

    Github

skdata

    Github

МОЛОКО

    Github

ИЕПИ

    Github

Квепи

    Github

Гебель

    Github

mlxtend

    Github

нолеарн

    Github

Рампа

    Github

Особенность Кузницы

    Github

РЕСП

    Github

Питон-ВЯЗ

    Github

PythonXY

    Вебсайт

XCS

    Вебсайт

PyML

    SourceForge

MLPY (неактивен)

    Вебсайт

Оранжевый

    Вебсайт

Монте

    Github

PYMVPA

    Вебсайт

MDP (неактивен)

    Github

Сегун

    Вебсайт

PyMC

    Вебсайт

Генсим

    Вебсайт

Нейролаб

    Github

FFnet (неактивен)

    SourceForge

LibSVM

    Github

Мята

    Github

Цепной

    Github

топик

    Github

Краб

    Github

Покров Дерева

    Github

легкий ветер

  • По материалам Theano
  • Github

глубокий

    Github

нейролаб

    Github

Мята

    Github

yahmm

    Github

пайдип

    Github

Раздражать

    Github

неоновый

    Github

настроение

    Github