Репозиторий кода книги по машинному обучению Python
ВАЖНОЕ ПРИМЕЧАНИЕ (21.09.2017):
Этот репозиторий GitHub содержит примеры кода из первого издания книги «Машинное обучение Python». Если вы ищете примеры кода 2-го издания , обратитесь к этому репозиторию.
Чего вы можете ожидать, так это 400 страниц, богатых полезным материалом, практически обо всем, что вам нужно знать, чтобы начать работу с машинным обучением... от теории до реального кода, который вы можете непосредственно применить на практике! Это не просто еще одна книга «Вот как работает scikit-learn». Я стремлюсь объяснить все основные концепции, рассказать вам все, что вам нужно знать, с точки зрения лучших практик и предостережений, и мы воплотим эти концепции в жизнь, в основном используя NumPy, scikit-learn и Theano.
Вы не уверены, подойдет ли эта книга вам? Пожалуйста, ознакомьтесь с выдержками из предисловия и предисловия или загляните в раздел часто задаваемых вопросов для получения дополнительной информации.
1-е издание, опубликовано 23 сентября 2015 г.
Мягкая обложка: 454 страницы.
Издатель: Packt Publishing
Язык: английский
ISBN-10: 1783555130
ISBN-13: 978-1783555130
ASIN Kindle: B00YSILNL0
Немецкий ISBN-13: 978-3958454224
Японский ISBN-13: 978-4844380603
Итальянский ISBN-13: 978-8850333974
Китайский (традиционный) ISBN-13: 978-9864341405
Китайский (материковый) ISBN-13: 978-7111558804
Корейский ISBN-13: 979-1187497035
Русский ISBN-13: 978-5970604090.
Оглавление и блокноты с кодом
Просто щелкните ссылку ipynb
/ nbviewer
рядом с заголовками глав, чтобы просмотреть примеры кода (в настоящее время внутренние ссылки на документы поддерживаются только версией NbViewer). Обратите внимание, что это всего лишь примеры кода, прилагаемые к книге, которую я загрузил для вашего удобства; имейте в виду, что эти блокноты могут оказаться бесполезными без формул и описательного текста.
- Выдержки из предисловия и предисловия
- Инструкция по настройке Python и блокнота Jupiter
- Машинное обучение: предоставление компьютерам возможности учиться на основе данных [dir] [ipynb] [nbviewer]
- Обучение алгоритмам машинного обучения для классификации [dir] [ipynb] [nbviewer]
- Обзор классификаторов машинного обучения с использованием Scikit-Learn [dir] [ipynb] [nbviewer]
- Создание хороших обучающих наборов — предварительная обработка данных [dir] [ipynb] [nbviewer]
- Сжатие данных посредством уменьшения размерности [dir] [ipynb] [nbviewer]
- Изучение лучших практик оценки моделей и оптимизации гиперпараметров [dir] [ipynb] [nbviewer]
- Объединение различных моделей для ансамблевого обучения [dir] [ipynb] [nbviewer]
- Применение машинного обучения для анализа настроений [dir] [ipynb] [nbviewer]
- Встраивание модели машинного обучения в веб-приложение [dir] [ipynb] [nbviewer]
- Прогнозирование непрерывных целевых переменных с помощью регрессионного анализа [dir] [ipynb] [nbviewer]
- Работа с неразмеченными данными – кластерный анализ [dir] [ipynb] [nbviewer]
- Обучение искусственных нейронных сетей распознаванию изображений [dir] [ipynb] [nbviewer]
- Распараллеливание обучения нейронных сетей через Theano [dir] [ipynb] [nbviewer]
Справочник по уравнениям
[PDF] [ТЕКС]
Слайды для обучения
Большое спасибо Дмитрию Длигачу за то, что он поделился слайдами из курса машинного обучения, который в настоящее время предлагается в Университете Лойолы в Чикаго.
- https://github.com/dmitriydligach/PyMLSlides
Дополнительные ресурсы по математике и NumPy
Некоторые читатели спрашивали о учебниках по Math и NumPy, поскольку они не были включены из-за ограничений по длине. Однако недавно я собрал такие ресурсы для другой книги, но выложил эти главы в свободный доступ в Интернете в надежде, что они также послужат полезным справочным материалом для этой книги:
Основы алгебры [PDF] [EPUB]
Учебник по исчислению и дифференциации [PDF] [EPUB]
Введение в NumPy [PDF] [EPUB] [Блокнот кода]
Ссылаясь на эту книгу
Вы можете повторно использовать фрагменты кода или другое содержимое этой книги в научных публикациях и других работах; в данном случае буду признателен за ссылку на первоисточник:
БибТекс :
@Book{raschka2015python,
author = {Raschka, Sebastian},
title = {Python Machine Learning},
publisher = {Packt Publishing},
year = {2015},
address = {Birmingham, UK},
isbn = {1783555130}
}
ОМС :
Рашка, Себастьян. Машинное обучение Python . Бирмингем, Великобритания: Packt Publishing, 2015. Печать.
Обратная связь и обзоры
Короткие фрагменты отзывов
Только что вышла новая книга Себастьяна Рашки «Машинное обучение Python». У меня появилась возможность прочитать обзорную версию, и она оправдала мои ожидания — действительно здорово! Он хорошо организован, в нем очень легко следовать, и он не только предлагает хорошую основу для умных людей, не являющихся экспертами, но и практикующие специалисты могут получить здесь некоторые идеи и научиться новым трюкам.
– Лон Рисберг из Data Elixir
Великолепная работа! На данный момент мне кажется, что я нашел правильный баланс теории и практики… математики и кода!
— Брайан Томас
Я прочитал (практически) все названия машинного обучения, основанные на Scikit-learn, и это, безусловно, лучшее из существующих.
— Джейсон Волосонович
Лучшая книга, которую я видел, вышла из издательства PACKT Publishing. Это очень хорошо написанное введение в машинное обучение на Python. Как уже отмечали другие, идеальное сочетание теории и применения.
– Джош Д.
Книга, сочетающая в себе качества, которые трудно найти: сочетает в себе необходимую математику для управления теорией с прикладным программированием на Python. Также приятно видеть, что здесь не тратится бумага на введение в Python, как это делается во многих других книгах, просто чтобы привлечь более широкую аудиторию. Вы можете сказать, что это написали знающие писатели, а не просто фанаты DIY.
– Клиент Амазонки
Себастьян Рашка создал потрясающее руководство по машинному обучению, сочетающее теорию с практикой. Книга объясняет машинное обучение с теоретической точки зрения и содержит множество закодированных примеров, показывающих, как на самом деле можно использовать технику машинного обучения. Его может прочитать новичок или продвинутый программист.
- Уильям П. Росс, 7 книг о Python, которые необходимо прочитать
Более длинные обзоры
Если вам нужна помощь, чтобы решить, подходит ли вам эта книга, ознакомьтесь с некоторыми из «длинных» обзоров, ссылка на которые приведена ниже. (Если вы написали отзыв, дайте мне знать, и я буду рад добавить его в список).
- Обзор машинного обучения Python, Патрик Хилл из Chartered Institute for IT
- Рецензия на книгу «Машинное обучение Python» Себастьяна Рашки Алекса Тернера в WhatPixel
Ссылки
- Электронная книга и мягкая обложка на Amazon.com, Amazon.co.uk, Amazon.de
- электронная книга в мягкой обложке от Packt (издатель)
- в других книжных магазинах: Google Books, O'Reilly, Safari, Barnes & Noble, Apple iBooks,...
- социальные платформы: Goodreads
Переводы
- Итальянский перевод через "Apogeo"
- Немецкий перевод через "mitp Verlag"
- Японский перевод через "Impress Top Gear"
- Китайский перевод (традиционный китайский)
- Китайский перевод (простой китайский)
- Корейский перевод через "Кёбо"
- Польский перевод через "Гелион"
Ссылки на литературу и дополнительные ресурсы для чтения
Ошибки
Бонусные тетради (нет в книге)
- Реализация логистической регрессии [dir] [ipynb] [nbviewer]
- Базовая настройка поиска по конвейеру и сетке [dir] [ipynb] [nbviewer]
- Пример расширенной вложенной перекрестной проверки [dir] [ipynb] [nbviewer]
- Простой шаблон веб-приложения Barebones Flask [каталог просмотра] [загрузить как zip-файл]
- Чтение рукописных цифр из MNIST в массивы NumPy [GitHub ipynb] [nbviewer]
- Устойчивость модели Scikit-learn с использованием JSON [GitHub ipynb] [nbviewer]
- Полиномиальная логистическая регрессия/softmax-регрессия [GitHub ipynb] [nbviewer]
«Содержимое по теме» (нет в книге)
- Оценка модели, выбор модели и выбор алгоритма в машинном обучении. Часть I.
- Оценка модели, выбор модели и выбор алгоритма в машинном обучении. Часть II
- Оценка модели, выбор модели и выбор алгоритма в машинном обучении. Часть III
Наука 2016
Мы прекрасно провели время на SciPy 2016 в Остине! Было очень приятно встретиться и пообщаться со многими читателями моей книги. Большое спасибо за все приятные слова и отзывы! И если вы пропустили это, мы с Андреасом Мюллером провели « Введение в машинное обучение с помощью Scikit-learn» ; Если вам интересно, видеозаписи Части I и Части II теперь доступны в сети!
PyData, Чикаго, 2016 г.
Я попытался решить довольно сложную задачу по внедрению scikit-learn и машинного обучения всего за 90 минут на PyData Chicago 2016. Слайды и учебные материалы доступны в разделе «Изучение scikit-learn — введение в машинное обучение на Python».
Примечание
Я создал отдельную библиотеку mlxtend
, содержащую дополнительные реализации алгоритмов машинного обучения (и общих алгоритмов «науки о данных»). Я также добавил реализации из этой книги (например, график области решений, искусственную нейронную сеть и алгоритмы последовательного выбора признаков) с дополнительным функционалом.
Переводы
Дорогие читатели ,
Прежде всего, я хочу поблагодарить всех вас за огромную поддержку! Я очень рад всем замечательным отзывам, которые вы мне прислали, и рад, что книга оказалась настолько полезной для широкой аудитории.
За последние пару месяцев я получил сотни писем и постарался ответить как можно больше в имеющееся у меня время. Чтобы они были полезны и другим читателям, я собрал многие свои ответы в разделе часто задаваемых вопросов (ниже).
Кроме того, некоторые из вас спрашивали меня о платформе, где читатели могли бы обсудить содержание книги. Я надеюсь, что это даст вам возможность обсудить и поделиться своими знаниями с другими читателями:
Доска обсуждений групп Google
(И я постараюсь сама ответить на вопросы, если время позволит! :))
Единственное, что можно сделать с хорошим советом, — это передать его дальше. Это никогда не принесет никакой пользы самому себе.
— Оскар Уайльд
Примеры и приложения читателей
Еще раз хочу сказать (большое!) СПАСИБО за все приятные отзывы о книге. Я получил много писем от читателей, которые воплотили концепции и примеры из этой книги в реальном мире и эффективно использовали их в своих проектах. В этом разделе я начинаю собирать некоторые из этих замечательных приложений и буду более чем счастлив добавить в этот список ваш проект — просто напишите мне по электронной почте!
- 40 сценариев по оптическому распознаванию символов Ричарда Лаймана
- Эксперименты с кодом Джереми Нэйшна
- Чему я научился, реализуя классификатор с нуля на Python, Жан-Николас Хоулд
Часто задаваемые вопросы
Общие вопросы
- Что такое машинное обучение и наука о данных?
- Почему вы и другие люди иногда реализуете алгоритмы машинного обучения с нуля?
- На каком пути обучения/дисциплине в области науки о данных мне следует сосредоточиться?
- В какой момент следует начать вносить вклад в открытый исходный код?
- Насколько, по вашему мнению, важен наставник для процесса обучения?
- Где находятся лучшие онлайн-сообщества, посвященные науке о данных/машинному обучению или Python?
- Как бы вы объяснили машинное обучение инженеру-программисту?
- Как будет выглядеть ваша учебная программа для новичка в машинном обучении?
- Каково определение науки о данных?
- Как специалисты по данным выполняют выбор модели? Отличается ли он от Kaggle?
Вопросы о машинном обучении
- Как связаны искусственный интеллект и машинное обучение?
- Каковы реальные примеры применения машинного обучения в этой области?
- Каковы различные области исследований в области интеллектуального анализа данных?
- Каковы различия в характере исследований между двумя областями: машинное обучение и интеллектуальный анализ данных?
- Как узнать, разрешима ли проблема с помощью машинного обучения?
- Каковы истоки машинного обучения?
- Как была разработана классификация как обучающаяся машина?
- Какие алгоритмы машинного обучения можно считать одними из лучших?
- Каковы общие категории классификаторов?
- В чем разница между классификатором и моделью?
- В чем разница между алгоритмом параметрического обучения и алгоритмом непараметрического обучения?
- В чем разница между функцией затрат и функцией потерь в машинном обучении?
Вопросы о концепциях и статистике машинного обучения
Функции стоимости и оптимизация
- Подбор модели с помощью уравнений в замкнутой форме, градиентный спуск, стохастический градиентный спуск и мини-пакетное обучение — в чем разница?
- Как вывести правило градиентного спуска для линейной регрессии и Адалины?
Регрессионный анализ
- В чем разница между Пирсоном R и простой линейной регрессией?
Модели деревьев
- Как работает модель случайного леса? Чем это отличается от бэггинга и буста в ансамблевых моделях?
- Каковы недостатки использования классического алгоритма дерева решений для большого набора данных?
- Почему реализации алгоритмов дерева решений обычно являются двоичными и каковы преимущества различных метрик примесей?
- Почему мы выращиваем деревья решений с помощью энтропии, а не ошибки классификации?
- Когда случайный лес может работать ужасно?
Оценка модели
- Что такое переоснащение?
- Как избежать переобучения?
- Всегда ли лучше иметь максимально возможное количество сверток при перекрестной проверке?
- При обучении классификатора SVM лучше ли иметь большое или маленькое количество опорных векторов?
- Как оценить модель?
- Какова наилучшая метрика проверки для многоклассовой классификации?
- Какие факторы следует учитывать при выборе метода прогнозной модели?
- Какие наборы данных игрушек лучше всего помогут визуализировать и понять поведение классификатора?
- Как выбрать ядра SVM?
- Интерлюдия: сравнение и вычисление показателей производительности при перекрестной проверке — проблемы несбалансированного класса и 3 различных способа расчета оценки F1
Логистическая регрессия
- Что такое регрессия Softmax и как она связана с логистической регрессией?
- Почему логистическая регрессия считается линейной моделью?
- Какова вероятностная интерпретация регуляризованной логистической регрессии?
- Всегда ли регуляризация в логистической регрессии приводит к лучшему согласованию и лучшему обобщению?
- В чем основная разница между наивным Байесом и логистической регрессией?
- Что такое «софтмакс и полиномиальные логистические потери» в контексте машинного обучения?
- Какова связь между логистической регрессией и нейронными сетями и когда какие использовать?
- Логистическая регрессия: почему сигмовидная функция?
- Существует ли аналитическое решение логистической регрессии, подобное нормальному уравнению линейной регрессии?
Нейронные сети и глубокое обучение
- Чем глубокое обучение отличается от обычного машинного обучения?
- Можете ли вы дать наглядное объяснение алгоритму обратного распространения ошибки для нейронных сетей?
- Почему изобретение глубоких сетей заняло так много времени?
- Какие есть хорошие книги/документы для изучения глубокого обучения?
- Почему существует так много библиотек глубокого обучения?
- Почему некоторые люди ненавидят нейронные сети/глубокое обучение?
- Как узнать, работает ли глубокое обучение для конкретной задачи лучше, чем SVM или случайный лес?
- Что не так, когда ошибка моей нейронной сети увеличивается?
- Как отладить алгоритм искусственной нейронной сети?
- В чем разница между моделями Perceptron, Adaline и нейронной сети?
- В чем заключается основная идея техники дропаута?
Другие алгоритмы контролируемого обучения
- Почему алгоритм «Ближайший сосед» — ленивый?
Обучение без присмотра
- Какие проблемы возникают при кластеризации?
Полуконтролируемое обучение
- Каковы преимущества полуконтролируемого обучения перед контролируемым и неконтролируемым обучением?
Ансамблевые методы
- Лучше ли объединение классификаторов со штабелированием, чем выбор лучшего?
Предварительная обработка, выбор и извлечение функций
- Почему нам нужно повторно использовать параметры обучения для преобразования тестовых данных?
- Каковы различные методы уменьшения размерности в машинном обучении?
- В чем разница между LDA и PCA для уменьшения размерности?
- Когда мне следует применять нормализацию/стандартизацию данных?
- Влияет ли центрирование или масштабирование функций на анализ главных компонентов?
- Как решить проблему машинного обучения с большим количеством функций?
- Каковы некоторые общие подходы к работе с недостающими данными?
- В чем разница между фильтром, оболочкой и встроенными методами выбора признаков?
- Следует ли считать этап подготовки/предварительной обработки данных частью разработки функций? Почему или почему нет?
- Рассматривается ли представление набора слов для классификации текста как разреженная матрица?
Наивный Байес
- Почему наивный байесовский классификатор наивен?
- Какова граница решения для наивного Байеса?
- Могу ли я использовать классификаторы Наивного Байеса для смешанных типов переменных?
- Можно ли смешивать разные типы переменных в Наивном Байесе, например, двоичные и продолжающиеся функции?
Другой
- Что такое евклидово расстояние с точки зрения машинного обучения?
- Когда следует использовать медиану, а не среднее или среднее значение?
Языки программирования и библиотеки для науки о данных и машинного обучения
- Широко ли сегодня используется R в науке о данных?
- В чем основная разница между TensorFlow и scikit-learn?
Вопросы о книге
- Могу ли я использовать абзацы и изображения из книги в презентациях или своем блоге?
- Чем эта книга отличается от других книг по машинному обучению?
- Какая версия Python использовалась в примерах кода?
- Какие технологии и библиотеки используются?
- Какую версию/формат книги вы бы порекомендовали?
- Почему вы выбрали Python для машинного обучения?
- Почему вы используете так много начальных и конечных подчеркиваний в примерах кода?
- Какова цель идиом
return self
в ваших примерах кода? - Есть ли какие-либо предпосылки и рекомендуемые материалы для предварительного чтения?
- Как я могу применить SVM к категориальным данным?
Контакт
Я рад ответить на вопросы! Просто напишите мне электронное письмо или задайте вопрос в списке адресов электронной почты групп Google.
Если вы хотите поддерживать связь, у меня есть довольно оживленная лента в Твиттере (@rasbt), посвященная науке о данных и машинному обучению. Я также веду блог, где публикую все, что меня особенно волнует.