Python для сложных задач

Наука о данных и машинное обучение.

Дж. Вандер Плас «Python для сложных задач» Питер, 2018 год, 576 стр., O’Reilly, ISBN: 978-5-496-03068-7; (11,9 мб. pdf)

Эта книга не учебник языка, а подробное руководство для разработчиков, использующих в своих проектах. Читателю представится возможность научиться применять полный спектр инструментов исследования и работы с данными языка Python, при помощи библиотек, IPython, NumPy, Pandas, Matplotlib и Scikit-Learn. Для изучения книги вы должны быть знакомы с языком Python, включая описание функций, присваивание переменных, вызов методов объектов, управление потоком выполнения программы и исполнения других простейших задач.

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

Оглавление книги

Содержание.

Глава 1. IPython: за пределами обычного Python 22
Командная строка или блокнот 23
Запуск командной оболочки IPython 23
Запуск блокнота Jupiter 23
Справка и документация в оболочке IPython 24
Доступ к документации с помощью символа ? 25
Доступ к исходному коду с помощью символов ?? 27
Просмотр содержимого модулей с помощью
Tab-автодополнения 28
Сочетания горячих клавиш в командной оболочке IPython 30
Навигационные горячие клавиши 31
Горячие клавиши ввода текста 31
Горячие клавиши для истории команд 32
Прочие горячие клавиши 33
«Магические» команды IPython 33
Вставка блоков кода: %paste и %cpaste 34
Выполнение внешнего кода: %run 35
Длительность выполнения кода: %timeit 36
Справка по «магическим» функциям: ?, %magic и %lsmagic 36
История ввода и вывода 37
Объекты In и Out оболочки IPython 37
Быстрый доступ к предыдущим выводам с помощью знака подчеркивания 38
Подавление вывода 39
Соответствующие «магические» команды 39
Оболочка IPython и использование системного командного процессора 40
Краткое введение в использование командного процессора 40
Инструкции командного процессора в оболочке IPython 42
Передача значений в командный процессор и из него 42
«Магические» команды для командного процессора 43
Ошибки и отладка 44
Управление исключениями: %xmode 44
Отладка: что делать, если чтения трассировок недостаточно 47
Профилирование и мониторинг скорости выполнения кода 49
Оценка времени выполнения фрагментов кода: %timeit и %time 50
Профилирование сценариев целиком: %prun 52
Пошаговое профилирование с помощью %lprun 53
Профилирование использования памяти: %memit и %mprun 54
Дополнительные источники информации об оболочке IPython 56
Веб-ресурсы 56
Книги 56

Глава 2. Введение в библиотеку NumPy 58
Работа с типами данных в языке Python 59
Целое число в языке Python — больше, чем просто целое число 60
Список в языке Python — больше, чем просто список 62
Массивы с фиксированным типом в языке Python 63
Создание массивов из списков языка Python 64
Создание массивов с нуля 65
Стандартные типы данных библиотеки NumPy 66
Введение в массивы библиотеки NumPy 67
Атрибуты массивов библиотеки NumPy 68
Индексация массива: доступ к отдельным элементам 69
Срезы массивов: доступ к подмассивам 70
Изменение формы массивов 74
Слияние и разбиение массивов 75
Выполнение вычислений над массивами библиотеки NumPy: универсальные функции 77
Медлительность циклов 77
Введение в универсальные функции 79
Обзор универсальных функций библиотеки NumPy 80
Продвинутые возможности универсальных функций 84
Универсальные функции: дальнейшая информация 86
Агрегирование: минимум, максимум и все, что посередине 86
Суммирование значений из массива 87
Минимум и максимум 87
Пример: чему равен средний рост президентов США 90
Операции над массивами. Транслирование 91
Введение в транслирование 92
Правила транслирования 94
Транслирование на практике 97
Сравнения, маски и булева логика 98
Пример: подсчет количества дождливых дней 98
Операторы сравнения как универсальные функции 100
Работа с булевыми массивами 102
Булевы массивы как маски 104
«Прихотливая» индексация 108
Исследуем возможности «прихотливой» индексации 108
Комбинированная индексация 109
Пример: выборка случайных точек 110
Изменение значений с помощью прихотливой индексации 112
Пример: разбиение данных на интервалы 113
Сортировка массивов 116
Быстрая сортировка в библиотеке NumPy: функции np.sort и np.argsort 117
Частичные сортировки: секционирование 118
Пример: K ближайших соседей 119
Структурированные данные: структурированные массивы библиотеки NumPy 123
Создание структурированных массивов 125
Более продвинутые типы данных 126
Массивы записей: структурированные массивы с дополнительными возможностями 127
Вперед, к Pandas 128

Глава 3. Манипуляции над данными с помощью пакета Pandas 129
Установка и использование библиотеки Pandas 130
Знакомство с объектами библиотеки Pandas 131
Объект Series библиотеки Pandas 131
Объект DataFrame библиотеки Pandas 135
Объект Index библиотеки Pandas 138
Индексация и выборка данных 140
Выборка данных из объекта Series 140
Выборка данных из объекта DataFrame 144
Операции над данными в библиотеке Pandas 149
Универсальные функции: сохранение индекса 149
Универсальные функции: выравнивание индексов 150
Универсальные функции: выполнение операции между объектами DataFrame и Series 153
Обработка отсутствующих данных 154
Компромиссы при обозначении отсутствующих данных 155
Отсутствующие данные в библиотеке Pandas 155
Операции над пустыми значениями 159
Иерархическая индексация 164
Мультииндексированный объект Series 164
Методы создания мультииндексов 168
Индексация и срезы по мультииндексу 171
Перегруппировка мультииндексов 174
Агрегирование по мультииндексам 177
Объединение наборов данных: конкатенация и добавление в конец 178
Напоминание: конкатенация массивов NumPy 179
Простая конкатенация с помощью метода pd.concat 180
Объединение наборов данных: слияние и соединение 184
Реляционная алгебра 184
Виды соединений 185
Задание ключа слияния 187
Задание операций над множествами для соединений 191
Пересекающиеся названия столбцов: ключевое слово suffixes 192
Пример: данные по штатам США 193
Агрегирование и группировка 197
Данные о планетах 198
Простое агрегирование в библиотеке Pandas 198
GroupBy: разбиение, применение, объединение 200
Сводные таблицы 210
Данные для примеров работы со сводными таблицами 210
Сводные таблицы «вручную» 211
Синтаксис сводных таблиц 212
Пример: данные о рождаемости 214
Векторизованные операции над строками 219
Знакомство со строковыми операциями библиотеки Pandas 219
Таблицы методов работы со строками библиотеки Pandas 221
Пример: база данных рецептов 226
Работа с временными рядами 230
Дата и время в языке Python 231
Временные ряды библиотеки Pandas: индексация по времени 235
Структуры данных для временных рядов библиотеки Pandas 235
Периодичность и смещения дат 238
Где найти дополнительную информацию 246
Пример: визуализация количества велосипедов в Сиэтле 246
Увеличение производительности библиотеки Pandas: eval() и query() 252
Основания для использования функций query() и eval(): составные выражения 254
Использование функции pandas.eval() для эффективных операций 255
Использование метода DataFrame.eval() для выполнения операций по столбцам 257
Метод DataFrame.query() 259
Производительность: когда следует использовать эти функции 259
Дополнительные источники информации 260

Глава 4. Визуализация с помощью библиотеки Matplotlib 262
Общие советы по библиотеке Matplotlib 263
Импорт matplotlib 263
Настройка стилей 263
Использовать show() или не использовать? 263
Как отображать свои графики 264
Сохранение рисунков в файл 266
Два интерфейса по цене одного 267
Интерфейс в стиле MATLAB 267
Объектно-ориентированный интерфейс 268
Простые линейные графики 269
Настройка графика: цвета и стили линий 271
Настройка графика: пределы осей координат 273
Метки на графиках 276
Простые диаграммы рассеяния 278
Построение диаграмм рассеяния с помощью функции plt.plot 279
Построение диаграмм рассеяния с помощью функции plt.scatter 281
Сравнение функций plot и scatter: примечание относительно производительности 283
Визуализация погрешностей 283
Простые планки погрешностей 283
Непрерывные погрешности 285
Графики плотности и контурные графики 286
Гистограммы, разбиения по интервалам и плотность 290
Двумерные гистограммы и разбиения по интервалам 292
Ядерная оценка плотности распределения 294
Пользовательские настройки легенд на графиках 295
Выбор элементов для легенды 297
Задание легенды для точек различного размера 298
Отображение нескольких легенд 300
Пользовательские настройки шкал цветов 301
Выбор карты цветов 302
Ограничения и расширенные возможности по использованию цветов 305
Дискретные шкалы цветов 306
Пример: рукописные цифры 306
Множественные субграфики 308
plt.axes: создание субграфиков вручную 309
plt.subplot: простые сетки субграфиков 310
Функция plt.subplots: создание всей сетки за один раз 311
Функция plt.GridSpec: более сложные конфигурации 313
Текст и поясняющие надписи 314
Пример: влияние выходных дней на рождение детей в США 315
Преобразования и координаты текста 317
Стрелки и поясняющие надписи 319
Пользовательские настройки делений на осях координат 321
Основные и промежуточные деления осей координат 322
Прячем деления и/или метки 323
Уменьшение или увеличение количества делений 324
Более экзотические форматы делений 325
Краткая сводка локаторов и форматеров 328
Пользовательские настройки Matplotlib: конфигурации и таблицы стилей 328
Выполнение пользовательских настроек графиков вручную 329
Изменяем значения по умолчанию: rcParams 330
Таблицы стилей 332
Построение трехмерных графиков в библиотеке Matplotlib 336
Трехмерные точки и линии 337
Трехмерные контурные графики 338
Каркасы и поверхностные графики 340
Триангуляция поверхностей 341
Отображение географических данных с помощью Basemap 344
Картографические проекции 346
Отрисовка фона карты 351
Нанесение данных на карты 353
Пример: города Калифорнии 354
Пример: данные о температуре на поверхности Земли 355
Визуализация с помощью библиотеки Seaborn 357
Seaborn по сравнению с Matplotlib 358
Анализируем графики библиотеки Seaborn 360
Пример: время прохождения марафона 368
Дополнительные источники информации 377
Источники информации о библиотеке Matplotlib 377
Другие графические библиотеки языка Python 377

Глава 5. Машинное обучение 379
Что такое машинное обучение 380
Категории машинного обучения 380
Качественные примеры прикладных задач машинного обучения 381
Классификация: предсказание дискретных меток 381
Резюме 390
Знакомство с библиотекой Scikit-Learn 391
Представление данных в Scikit-Learn 391
API статистического оценивания библиотеки Scikit-Learn 394
Прикладная задача: анализ рукописных цифр 403
Резюме 408
Гиперпараметры и проверка модели 408
Соображения относительно проверки модели 409
Выбор оптимальной модели 413
Кривые обучения 420
Проверка на практике: поиск по сетке 425
Резюме 426
Проектирование признаков 427
Категориальные признаки 427
Текстовые признаки 429
Признаки для изображений 430
Производные признаки 430
Внесение отсутствующих данных 433
Конвейеры признаков 434
Заглянем глубже: наивная байесовская классификация 435
Байесовская классификация 435
Гауссов наивный байесовский классификатор 436
Полиномиальный наивный байесовский классификатор 439
Когда имеет смысл использовать наивный байесовский классификатор 442
Заглянем глубже: линейная регрессия 443
Простая линейная регрессия 443
Регрессия по комбинации базисных функций 446
Регуляризация 450
Пример: предсказание велосипедного трафика 453
Заглянем глубже: метод опорных векторов 459
Основания для использования метода опорных векторов 459
Метод опорных векторов: максимизируем отступ 461
Пример: распознавание лиц 470
Резюме по методу опорных векторов 474
Заглянем глубже: деревья решений и случайные леса 475
Движущая сила случайных лесов: деревья принятия решений 475
Ансамбли оценивателей: случайные леса 481
Регрессия с помощью случайных лесов 482
Пример: использование случайного леса для классификации цифр 484
Резюме по случайным лесам 486
Заглянем глубже: метод главных компонент 487
Знакомство с методом главных компонент 487
Использование метода PCA для фильтрации шума 495
Пример: метод Eigenfaces 497
Резюме метода главных компонент 500
Заглянем глубже: обучение на базе многообразий 500
Обучение на базе многообразий: HELLO 501
Многомерное масштабирование (MDS) 502
MDS как обучение на базе многообразий 505
Нелинейные вложения: там, где MDS не работает 507
Нелинейные многообразия: локально линейное вложение 508
Некоторые соображения относительно методов обучения на базе многообразий 510
Пример: использование Isomap для распознавания лиц 511
Пример: визуализация структуры цифр 515
Заглянем глубже: кластеризация методом k-средних 518
Знакомство с методом k-средних 518
Алгоритм k-средних: максимизация математического ожидания 520

Примеры 525
Заглянем глубже: смеси Гауссовых распределений 532
Причины появления GMM: недостатки метода k-средних 532
Обобщение EM-модели: смеси Гауссовых распределений 535
GMM как метод оценки плотности распределения 540
Пример: использование метода GMM для генерации новых данных 544
Заглянем глубже: ядерная оценка плотности распределения 547
Обоснование метода KDE: гистограммы 547
Ядерная оценка плотности распределения на практике 552
Пример: KDE на сфере 554
Пример: не столь наивный байес 557
Прикладная задача: конвейер распознавания лиц 562
Признаки в методе HOG 563
Метод HOG в действии: простой детектор лиц 564
Предостережения и дальнейшие усовершенствования 569
Дополнительные источники информации по машинному обучению 571
Машинное обучение в языке Python 571
Машинное обучение в целом 572

СкачатьPDF

Похожая литература