Python для сложных задач: наука о данных и машинное обучение

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Книга «Python Data Science Handbook» - это подробное руководство по самым разным вычислительным и статистическим методам, без которых немыслима любая интенсивная обработка данных, научные исследования и передовые разработки. Читатели, уже имеющие опыт программирования и желающие эффективно использовать Python в сфере Data Science, найдут в этой книге ответы на всевозможные вопросы, например: 1) как мне считать этот формат данных в мой скрипт? 2) Как преобразовать, очистить эти данные и манипулировать ими? 3) Как визуализировать данные такого типа? Как при помощи этих данных разобраться в ситуации, получить ответы на вопросы, построить статистические модели или реализовать машинное обучение? https://github.com/jakevdp/PythonDataScienceHandbook

Author(s): Дж. Вандер Плас
Series: Бестселлеры O’Reilly
Publisher: Питер
Year: 2018

Language: Russian
Pages: 576
City: СПб.
Tags: python

Оглавление
Предисловие
Что такое наука о данных
Для кого предназначена эта книга
Почему Python
Общая структура книги
Использование примеров кода
Вопросы установки
Условные обозначения
Глава 1. IPython: за пределами обычного Python
Командная строка или блокнот?
Запуск командной оболочки IPython
Запуск блокнота Jupiter
Справка и документация в оболочке IPython
Доступ к документации с помощью символа ?
Доступ к исходному коду с помощью символов ??
Просмотр содержимого модулей с помощью Tab-автодополнения
Автодополнение названий содержимого объектов с помощью клавиши Tab
Автодополнение с помощью клавиши Tab во время импорта
Помимо автодополнения табуляцией, подбор по джокерному символу
Сочетания горячих клавиш в командной оболочке IPython
Навигационные горячие клавиши
Горячие клавиши ввода текста
Горячие клавиши для истории команд
Прочие горячие клавиши
«Магические» команды IPython
Вставка блоков кода: %paste и %cpaste
Выполнение внешнего кода: %run
Длительность выполнения кода: %timeit
Справка по «магическим» функциям: ?, %magic и %lsmagic
История ввода и вывода
Объекты In и Out оболочки IPython
Быстрый доступ к предыдущим выводам с помощью знака подчеркивания
Подавление вывода
Соответствующие «магические» команды
Оболочка IPython и использование системного командного процессора
Краткое введение в использование командного процессора
Инструкции командного процессора в оболочке IPython
Передача значений в командный процессор и из него
«Магические» команды для командного процессора
Ошибки и отладка
Управление исключениями: %xmode
Отладка: что делать, если чтения трассировок недостаточно
Профилирование и мониторинг скорости выполнения кода
Оценка времени выполнения фрагментов кода: %timeit и %time
Профилирование сценариев целиком: %prun
Пошаговое профилирование с помощью %lprun
Профилирование использования памяти: %memit и %mprun
Дополнительные источники информации об оболочке IPython
Веб-ресурсы
Книги
Глава 2. Введение в библиотеку NumPy
Работа с типами данных в языке Python
Целое число в языке Python — больше, чем просто целое число
Список в языке Python — больше, чем просто список
Массивы с фиксированным типом в языке Python
Создание массивов из списков языка Python
Создание массивов с нуля
Стандартные типы данных библиотеки NumPy
Введение в массивы библиотеки NumPy
Атрибуты массивов библиотеки NumPy
Индексация массива: доступ к отдельным элементам
Срезы массивов: доступ к подмассивам
Одномерные подмассивы
Многомерные подмассивы
Доступ к строкам и столбцам массива
Подмассивы как предназначенные только для чтения представления
Создание копий массивов
Изменение формы массивов
Слияние и разбиение массивов
Слияние массивов
Разбиение массивов
Выполнение вычислений над массивами библиотеки NumPy: универсальные функции
Медлительность циклов
Введение в универсальные функции
Обзор универсальных функций библиотеки NumPy
Арифметические функции над массивами
Абсолютное значение
Тригонометрические функции
Показательные функции и логарифмы
Специализированные универсальные функции
Продвинутые возможности универсальных функций
Указание массива для вывода результата
Сводные показатели
Векторные произведения
Универсальные функции: дальнейшая информация
Агрегирование: минимум, максимум и все, что посередине
Суммирование значений из массива
Минимум и максимум
Многомерные сводные показатели
Другие функции агрегирования
Пример: чему равен средний рост президентов США
Пример: чему равен средний рост президентов США
Операции над массивами. Транслирование
Введение в транслирование
Правила транслирования
Транслирование. Пример 1
Транслирование. Пример 2
Транслирование. Пример 3
Транслирование на практике
Центрирование массива
Построение графика двумерной функции
Сравнения, маски и булева логика
Пример: подсчет количества дождливых дней
Операторы сравнения как универсальные функции
Работа с булевыми массивами
Подсчет количества элементов
Булевы операторы
Булевы массивы как маски
«Прихотливая» индексация
Исследуем возможности «прихотливой» индексации
Комбинированная индексация
Пример: выборка случайных точек
Изменение значений с помощью прихотливой индексации
Пример: разбиение данных на интервалы
Сортировка массивов
Быстрая сортировка в библиотеке NumPy: функции np.sort и np.argsort
Частичные сортировки: секционирование
Пример: K ближайших соседей
Структурированные данные: структурированные массивы библиотеки NumPy
Создание структурированных массивов
Более продвинутые типы данных
Массивы записей: структурированные массивы с дополнительными возможностями
Вперед, к Pandas
Глава 3. Манипуляции над данными с помощью пакета Pandas
Установка и использование библиотеки Pandas
Знакомство с объектами библиотеки Pandas
Объект Series библиотеки Pandas
Объект Series как обобщенный массив NumPy
Объект Series как специализированный словарь
Создание объектов Series
Объект DataFrame библиотеки Pandas
DataFrame как обобщенный массив NumPy
Объект DataFrame как специализированный словарь
Создание объектов DataFrame
Объект Index библиотеки Pandas
Объект Index как неизменяемый массив
Index как упорядоченное множество
Индексация и выборка данных
Выборка данных из объекта Series
Объект Series как словарь
Объект Series как одномерный массив
Индексаторы: loc, iloc и ix
Выборка данных из объекта DataFrame
Объект DataFrame как словарь
Объект DataFrame как двумерный массив
Дополнительный синтаксис для индексации
Операции над данными в библиотеке Pandas
Универсальные функции: сохранение индекса
Универсальные функции: выравнивание индексов
Выравнивание индексов в объектах Series
Выравнивание индексов в объектах DataFrame
Универсальные функции: выполнение операции между объектами DataFrame и Series
Обработка отсутствующих данных
Компромиссы при обозначении отсутствующих данных
Отсутствующие данные в библиотеке Pandas
None: отсутствующие данные в языке Python
NaN: отсутствующие числовые данные
Значения NaN и None в библиотеке Pandas
Операции над пустыми значениями
Выявление пустых значений
Удаление пустых значений
Заполнение пустых значений
Иерархическая индексация
Мультииндексированный объект Series
Плохой способ
Лучший способ
Мультииндекс как дополнительное измерение
Методы создания мультииндексов
Явные конструкторы для объектов MultiIndex
Названия уровней мультииндексов
Мультииндекс для столбцов
Индексация и срезы по мультииндексу
Мультииндексация объектов Series
Мультииндексация объектов DataFrame
Перегруппировка мультииндексов
Отсортированные и неотсортированные индексы
Выполнение над индексами операций stack и unstack
Создание и перестройка индексов
Агрегирование по мультииндексам
Объединение наборов данных: конкатенация и добавление в конец
Напоминание: конкатенация массивов NumPy
Простая конкатенация с помощью метода pd.concat
Дублирование индексов
Конкатенация с использованием соединений
Метод append()
Объединение наборов данных: слияние и соединение
Реляционная алгебра
Виды соединений
Соединения «один-к-одному»
Соединения «многие-к-одному»
Соединения «многие-ко-многим»
Задание ключа слияния
Ключевое слово on
Ключевые слова left_on и right_on
Ключевые слова left_index и right_index
Задание операций над множествами для соединений
Пересекающиеся названия столбцов: ключевое слово suffixes
Пример: данные по штатам США
Агрегирование и группировка
Данные о планетах
Простое агрегирование в библиотеке Pandas
GroupBy: разбиение, применение, объединение
Разбиение, применение и объединение
Объект GroupBy
Агрегирование, фильтрация, преобразование, применение
Задание ключа разбиения
Пример группировки
Сводные таблицы
Данные для примеров работы со сводными таблицами
Сводные таблицы «вручную»
Синтаксис сводных таблиц
Многоуровневые сводные таблицы
Дополнительные параметры сводных таблиц
Пример: данные о рождаемости
Векторизованные операции над строками
Знакомство со строковыми операциями библиотеки Pandas
Таблицы методов работы со строками библиотеки Pandas
Методы, аналогичные строковым методам языка Python
Методы, использующие регулярные выражения
Прочие методы
Пример: база данных рецептов
Простая рекомендательная система для рецептов
Дальнейшая работа с рецептами
Работа с временными рядами
Дата и время в языке Python
Нативные даты и время языка Python: пакеты datetime и dateutil
Типизированные массивы значений времени: тип datetime64 библиотеки NumPy
Даты и время в библиотеке Pandas: избранное из лучшего
Временные ряды библиотеки Pandas: индексация по времени
Структуры данных для временных рядов библиотеки Pandas
Периодичность и смещения дат
Передискретизация, временные сдвиги и окна
Передискретизация и изменение периодичности интервалов
Временные сдвиги
Скользящие окна
Где найти дополнительную информацию
Пример: визуализация количества велосипедов в Сиэтле
Визуализация данных
Углубляемся в изучение данных
Увеличение производительности библиотеки Pandas: eval() и query()
Основания для использования функций query() и eval(): составные выражения
Использование функции pandas.eval() для эффективных операций
Использование метода DataFrame.eval() для выполнения операций по столбцам
Присваивание в методе DataFrame.eval()
Локальные переменные в методе DataFrame.eval()
Метод DataFrame.query()
Производительность: когда следует использовать эти функции
Дополнительные источники информации
Глава 4. Визуализация с помощью библиотеки Matplotlib
Общие советы по библиотеке Matplotlib
Импорт matplotlib
Настройка стилей
Использовать show() или не использовать? Как отображать свои графики
Построение графиков из сценария
Построение графиков из командной оболочки IPython
Построение графиков из блокнота IPython
Сохранение рисунков в файл
Два интерфейса по цене одного
Интерфейс в стиле MATLAB
Объектно-ориентированный интерфейс
Простые линейные графики
Настройка графика: цвета и стили линий
Настройка графика: пределы осей координат
Метки на графиках
Простые диаграммы рассеяния
Построение диаграмм рассеяния с помощью функции plt.plot
Построение диаграмм рассеяния с помощью функции plt.scatter
Сравнение функций plot и scatter: примечание относительно производительности
Визуализация погрешностей
Простые планки погрешностей
Непрерывные погрешности
Графики плотности и контурные графики
Гистограммы, разбиения по интервалам и плотность
Двумерные гистограммы и разбиения по интервалам
Функция plt.hist2d: двумерная гистограмма
Функция plt.hexbin: гексагональное разбиение по интервалам
Ядерная оценка плотности распределения
Пользовательские настройки легенд на графиках
Выбор элементов для легенды
Задание легенды для точек различного размера
Отображение нескольких легенд
Пользовательские настройки шкал цветов
Выбор карты цветов
Ограничения и расширенные возможности по использованию цветов
Дискретные шкалы цветов
Пример: рукописные цифры
Множественные субграфики
plt.axes: создание субграфиков вручную
plt.subplot: простые сетки субграфиков
Функция plt.subplots: создание всей сетки за один раз
Функция plt.GridSpec: более сложные конфигурации
Текст и поясняющие надписи
Пример: влияние выходных дней на рождение детей в США
Преобразования и координаты текста
Стрелки и поясняющие надписи
Пользовательские настройки делений на осях координат
Основные и промежуточные деления осей координат
Прячем деления и/или метки
Уменьшение или увеличение количества делений
Более экзотические форматы делений
Краткая сводка локаторов и форматеров
Пользовательские настройки Matplotlib: конфигурации и таблицы стилей
Выполнение пользовательских настроек графиков вручную
Изменяем значения по умолчанию: rcParams
Таблицы стилей
Стиль по умолчанию
Стиль FiveThirtyEight
ggplot
Стиль «байесовские методы для хакеров»
Темный фон
Оттенки серого
Стиль Seaborn
Построение трехмерных графиков в библиотеке Matplotlib
Трехмерные точки и линии
Трехмерные контурные графики
Каркасы и поверхностные графики
Триангуляция поверхностей
Отображение географических данных с помощью Basemap
Картографические проекции
Цилиндрические проекции
Псевдоцилиндрические проекции
Перспективные проекции
Конические проекции
Другие проекции
Отрисовка фона карты
Нанесение данных на карты
Пример: города Калифорнии
Пример: данные о температуре на поверхности Земли
Визуализация с помощью библиотеки Seaborn
Seaborn по сравнению с Matplotlib
Анализируем графики библиотеки Seaborn
Гистограммы, KDE и плотности
Фасетные гистограммы
Графики факторов
Совместные распределения
Столбчатые диаграммы
Пример: время прохождения марафона
Дополнительные источники информации
Источники информации о библиотеке Matplotlib
Другие графические библиотеки языка Python
Глава 5. Машинное обучение
Что такое машинное обучение
Категории машинного обучения
Качественные примеры прикладных задач машинного обучения
Классификация: предсказание дискретных меток
Регрессия: предсказание непрерывных меток
Кластеризация: определение меток для немаркированных данных
Понижение размерности
Резюме
Знакомство с библиотекой Scikit-Learn
Представление данных в Scikit-Learn
Данные как таблица
Матрица признаков
Целевой массив
API статистического оценивания библиотеки Scikit-Learn
Основы API статистического оценивания
Пример обучения с учителем: простая линейная регрессия
Пример обучения с учителем: классификация набора данных Iris
Пример обучения без учителя: понижение размерности набора данных Iris
Обучение без учителя: кластеризация набора данных Iris
Прикладная задача: анализ рукописных цифр
Загрузка и визуализация цифр
Обучение без учителя: понижение размерности
Классификация цифр
Резюме
Гиперпараметры и проверка модели
Соображения относительно проверки модели
Плохой способ проверки модели
Хороший способ проверки модели: отложенные данные
Перекрестная проверка модели
Выбор оптимальной модели
Компромисс между систематической ошибкой и дисперсией
Кривые проверки в библиотеке Scikit-Learn
Кривые обучения
Проверка на практике: поиск по сетке
Резюме
Проектирование признаков
Категориальные признаки
Текстовые признаки
Признаки для изображений
Производные признаки
Внесение отсутствующих данных
Конвейеры признаков
Заглянем глубже: наивная байесовская классификация
Байесовская классификация
Гауссов наивный байесовский классификатор
Полиномиальный наивный байесовский классификатор
Когда имеет смысл использовать наивный байесовский классификатор
Заглянем глубже: линейная регрессия
Простая линейная регрессия
Регрессия по комбинации базисных функций
Полиномиальные базисные функции
Гауссовы базисные функции
Регуляризация
Гребневая регрессия (L2-регуляризация)
Лассо-регуляризация (L1)
Пример: предсказание велосипедного трафика
Заглянем глубже: метод опорных векторов
Основания для использования метода опорных векторов
Метод опорных векторов: максимизируем отступ
Аппроксимация методом опорных векторов
Выходим за границы линейности: SVM-ядро
Настройка SVM: размытие отступов
Пример: распознавание лиц
Резюме по методу опорных векторов
Заглянем глубже: деревья решений и случайные леса
Движущая сила случайных лесов: деревья принятия решений
Создание дерева принятия решений
Деревья принятия решений и переобучение
Ансамбли оценивателей: случайные леса
Регрессия с помощью случайных лесов
Пример: использование случайного леса для классификации цифр
Резюме по случайным лесам
Заглянем глубже: метод главных компонентов
Знакомство с методом главных компонентов
PCA как метод понижения размерности
Использование метода PCA для визуализации: рукописные цифры
В чем смысл компонент?
Выбор количества компонент
Использование метода PCA для фильтрации шума
Пример: метод Eigenfaces
Резюме метода главных компонентов
Заглянем глубже: обучение на базе многообразий
Обучение на базе многообразий: HELLO
Многомерное масштабирование (MDS)
MDS как обучение на базе многообразий
Нелинейные вложения: там, где MDS не работает
Нелинейные многообразия: локально линейное вложение
Некоторые соображения относительно методов обучения на базе многообразий
Пример: использование Isomap для распознавания лиц
Пример: визуализация структуры цифр
Заглянем глубже: кластеризация методом k-средних
Знакомство с методом k-средних
Алгоритм k-средних: максимизация математического ожидания
Примеры
Пример 1: применение метода k-средних для рукописных цифр
Пример 2: использование метода k-средних для сжатия цветов
Заглянем глубже: смеси гауссовых распределений
Причины появления GMM: недостатки метода k-средних
Обобщение EM-модели: смеси гауссовых распределений
Выбор типа ковариации
GMM как метод оценки плотности распределения
Сколько компонент необходимо?
Пример: использование метода GMM для генерации новых данных
Заглянем глубже: ядерная оценка плотности распределения
Обоснование метода KDE: гистограммы
Ядерная оценка плотности распределения на практике
Пример: KDE на сфере
Пример: не столь наивный байес
Внутреннее устройство пользовательского оценивателя
Использование пользовательского оценивателя
Прикладная задача: конвейер распознавания лиц
Признаки в методе HOG
Метод HOG в действии: простой детектор лиц
Предостережения и дальнейшие усовершенствования
Дополнительные источники информации по машинному обучению
Машинное обучение в языке Python
Машинное обучение в целом
Об авторе