Я рассматриваю возможность использования библиотек Python для проведения экспериментов по машинному обучению. До сих пор я полагался на WEKA, но в целом был довольно недоволен. Это связано прежде всего с тем, что я обнаружил, что WEKA не так хорошо поддерживается (очень мало примеров, документации мало, а поддержка сообщества менее чем желательна в моем опыте), и я оказался в затруднительном положении без помощи в будущем. Еще одна причина, по которой я обдумываю этот шаг, заключается в том, что мне действительно нравится Python (я новичок в Python) и не хочу возвращаться к кодированию на Java.
Итак, мой вопрос, что является более
- комплексный
- масштабируемые (100 тыс. функций, 10 тыс. примеров) и
- хорошо поддерживаются библиотеки для выполнения ML в Python?
Мне особенно интересно заниматься классификацией текста, и поэтому я хотел бы использовать библиотеку, которая имеет хорошую коллекцию классификаторов, методов выбора признаков (информационное усиление, хи-квадрат и т. Д.) И возможности предварительной обработки текста (определение текста, удаление стоп-слов). , TF-IDF и т. д.).
Основываясь на прошлых темах электронной почты здесь и в других местах, я до сих пор изучал PyML, scikits-learn и Orange. Каким был опыт людей в отношении вышеупомянутых 3 метрик, которые я упоминаю?
Любые другие предложения?
Ответы:
Об опции scikit-learn: 100 тыс. (Разреженных) функций и 10 тыс. Выборок достаточно малы, чтобы поместиться в памяти, и, следовательно, отлично подходят для scikit-learn (такого же размера, как набор данных из 20 групп новостей).
Вот руководство, которое я дал на PyCon 2011 с главой по классификации текста с упражнениями и решениями:
http://scikit-learn.github.com/scikit-learn-tutorial/ (онлайн-версия HTML)
https://github.com/downloads/scikit-learn/scikit-learn-tutorial/scikit_learn_tutorial.pdf (PDF-версия)
https://github.com/scikit-learn/scikit-learn-tutorial (исходный код + упражнения)
Я также выступил с докладом на тему, которая является обновленной версией версии, которую я дал на PyCon FR. Вот слайды (и встроенное видео в комментариях):
Что касается выбора функций, взгляните на этот ответ по кворе, где все примеры основаны на документации scikit-learn:
В scikit-learn мы пока не извлекаем функции коллокации. Для этого используйте nltk и nltk-trainer:
источник
Что касается работы с текстом, взгляните на NLTK. Очень, очень хорошо поддерживается и документируется (есть даже книга в Интернете или на бумаге, если вы предпочитаете) и будет выполнять предварительную обработку, которую вы требуете. Возможно, вы также найдете Gensim полезным; акцент делается на моделировании векторного пространства, и в нем есть масштабируемые реализации LSI и LDA (я думаю, что и pLSI), если они представляют интерес. Это также сделает выбор с помощью tf-idf - я не уверен, что NLTK делает. Я использовал их на корпусах ~ 50k без особых затруднений.
NLTK: http://www.nltk.org/
Генсим: http://nlp.fi.muni.cz/projekty/gensim/
К сожалению, что касается основного направления вашего вопроса, я не знаком с конкретными библиотеками, на которые вы ссылаетесь (хотя раньше я использовал немного scikits-learn).
источник
Python имеет широкий спектр библиотек ML (см. Также mloss.org). Тем не менее, я всегда чувствую, что это больше полезно для мл исследователей, чем для мл практиков.
Numpy / SciPy и matplotlib являются отличными инструментами для научной работы с Python. Если вы не боитесь взломать большинство математических формул самостоятельно, вы не будете разочарованы. Кроме того, очень просто использовать графический процессор с cudamat или gnumpy - эксперименты, которые занимали дни раньше, теперь выполняются за часы или даже минуты.
Последний ребенок на блоке, вероятно, Теано . Это символический язык для математических выражений, который поставляется с opmitimzations, реализациями GPU и автоматическим дифференцированием über-функций, которое является не чем иным, как удивительным для методов, основанных на градиенте.
Кроме того, насколько я знаю, NLTK, упомянутый JMS, в основном является библиотекой естественного языка с открытым исходным кодом номер один.
Python - это правильный инструмент для машинного обучения.
источник
Позвольте мне предложить оранжевый
да
да
да
Все это работает из коробки в Orange
Я никогда не использовал Orange для обработки текста, хотя
источник
Не уверен, что это особенно полезно, но для программистов есть руководство по изучению статистики на Python, которое доступно онлайн. http://www.greenteapress.com/thinkstats/
Кажется, это довольно неплохо из моего краткого сканирования, и, похоже, в нем говорится о некоторых методах машинного обучения, так что это может быть хорошим местом для начала.
источник
Проверьте libsvm .
источник
SHOGUN ( 将軍 ) - это масштабный набор инструментов для машинного обучения, который выглядит многообещающим.
источник
библиотека Python ml с открытым исходным кодом PySpark MLlib https://spark.apache.org/docs/0.9.0/mllib-guide.html
Собственная библиотека ml с бесплатной пробной версией GraphLab Create https://dato.com/products/create/
источник
Как подчеркнул @ogrisel, scikit-learn - один из лучших пакетов машинного обучения для Python. Он хорошо подходит для наборов данных размером до 100 тыс. (Разреженных) объектов и 10 тыс. Выборок, и даже для наборов данных незначительно большего размера, которые могут содержать более 200 тыс. Строк. В основном, любой набор данных, который умещается в памяти.
Но если вы ищете хорошо масштабируемую среду машинного обучения Python, я очень рекомендую Pyspark MLlib. Поскольку наборы данных в наши дни могут расти в геометрической прогрессии (учитывая большие объемы данных и глубокую волну обучения), вам часто нужна платформа, которая может хорошо масштабироваться и быстро работать не только на этапе обучения модели, но также и на этапе проектирования элементов (преобразование элементов). Выбор функций). Давайте рассмотрим все три показателя для платформы Spark Mllib, которые вас интересуют:
Масштабируемость: если ваш набор данных может поместиться в памяти, scikit-learn должен быть вашим выбором. Если он слишком большой, чтобы уместиться в памяти, Spark - это то, что нужно. Здесь важно отметить, что Spark работает быстрее только в распределенных настройках.
Полнота: Sklearn гораздо богаче с точки зрения приличных реализаций большого количества обычно используемых алгоритмов по сравнению с spark mllib. Поддержка манипулирования данными и их преобразования также более богата в scikit-learn. Spark Mllib имеет достаточные модули преобразования данных, которые выполняют большинство задач. Таким образом, если у вас возникнут проблемы с масштабируемостью с помощью spark mllib, вы все равно сможете выполнить свою работу. Он имеет всю поддержку для корреляционного анализа, извлечения функций (tf-idf, word2vec, CountVectorizer), преобразования функций (Tokenizer, StopWordsRemover, nn-грамм, Binarizer, PCA и т. Д.). Для подробного списка смотрите ссылку ниже:
Извлечение, преобразование и выбор функций в Spark Mllib
Mllib Классификация и регрессия
Бонус: Apache Spark поддерживает Python, R, Java и Scala. Таким образом, если завтра вы решите поэкспериментировать с другим языком (по собственному выбору или по профессиональным причинам), вам не придется изучать совершенно новую структуру.
источник
Я не знаю, если вы все еще ищете какой-то совет (вы задали этот вопрос 5 месяцев назад ...). Я только начал эту книгу, и пока все хорошо:
https://www.amazon.com.mx/dp/1491962291/ref=cm_cr_ryp_prd_ttl_sol_3
Автор показывает код, примеры и объясняет некоторые теории и математические «закулисные» алгоритмы ML. Я нахожу это очень поучительным. Надеюсь, что это может быть то же самое для вас.
источник