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 — первоклассный инструмент, и в первую очередь благодаря наличию множества библиотек для хранения, анализа и обработки данных. Отдельные части стека Python описываются во многих источниках, но только в новом издании «Python для сложных задач» вы найдете подробное описание IPython, NumPy, pandas, Matplotlib, Scikit-Learn и др. Специалисты по обработке данных, знакомые с языком Python, найдут во втором издании решения таких повседневных задач, как обработка, преобразование и подготовка данных, визуализация различных типов данных, использование данных для построения статистических моделей и моделей машинного обучения. Проще говоря, эта книга является идеальным справочником по научным вычислениям в Python.

Author(s): Джейк Вандер Плас
Series: Бестселлеры O’Reilly
Edition: 1
Publisher: Спринт Бук
Year: 2024

Language: Russian
Commentary: Publisher's PDF
Pages: 592
City: Астана
Tags: Machine Learning; Decision Trees; Data Science; Classification; Principal Component Analysis; Support Vector Machines; Data Visualization; Feature Engineering; Hyperparameter Tuning; Linear Regression; scikit-learn; NumPy; matplotlib; pandas; Jupyter; Seaborn; Random Forest; Naïve Bayes; Manifold Learning

Отзывы ко второму изданию
Предисловие
Что такое наука о данных
Для кого предназначена эта книга
Почему Python
Общая структура книги
Вопросы установки
Условные обозначения
Использование примеров кода
Полноцветные иллюстрации
От издательства
Часть I. Jupyter: за пределами обычного Python
Глава 1
Глава 1. Знакомство с IPython и Jupyter
Запуск командной оболочки IPython
Запуск Jupiter Notebook
Справка и документация в IPython
Доступ к документации с помощью символа ?
Доступ к исходному коду с помощью символов ??
Исследование содержимого модулей с помощью функции автодополнения
Горячие клавиши в командной оболочке IPython
Навигационные горячие клавиши
Горячие клавиши ввода текста
Горячие клавиши для истории команд
Прочие горячие клавиши
Глава 2. Расширенные интерактивные возможности
Магические команды IPython
Выполнение внешнего кода: %run
Измерение продолжительности выполнения кода: %timeit
Справка по «магическим» функциям: ?, %magic и %lsmagic
История ввода и вывода
Объекты In и Out оболочки IPython
Быстрый доступ к предыдущим выводам с помощью знака подчеркивания
Подавление вывода
Соответствующие «магические» команды
IPython и использование системного командного процессора
Краткое введение в использование командного процессора
Инструкции командного процессора в оболочке IPython
Передача значений в командный процессор и из него
«Магические» команды для командного процессора
Глава 3. Отладка и профилирование
Ошибки и отладка
Управление исключениями: %xmode
Отладка: что делать, если информации в трассировке недостаточно
Профилирование и хронометраж выполнения кода
Хронометраж выполнения фрагментов кода: %timeit и %time
Профилирование сценариев целиком: %prun
Пошаговое профилирование с помощью %lprun
Профилирование потребления памяти: %memit и %mprun
Дополнительные источники информации об оболочке IPython
Веб-ресурсы
Книги
Часть II. Введение в NumPy
Глава 4. Типы данных в Python
Целое число в Python — больше, чем просто целое число
Список в Python — больше чем просто список
Массивы фиксированного типа в Python
Создание массивов из списков
Создание массивов с нуля
Стандартные типы данных NumPy
Глава 5. Введение в массивы NumPy
Атрибуты массивов NumPy
Индексация массива: доступ к отдельным элементам
Срезы массивов: доступ к подмассивам
Одномерные подмассивы
Многомерные подмассивы
Подмассивы как представления
Создание копий массивов
Изменение формы массивов
Слияние и разбиение массивов
Слияние массивов
Разбиение массивов
Глава 6. Вычисления с массивами NumPy: универсальные функции
Медлительность циклов
Введение в универсальные функции
Обзор универсальных функций в библиотеке NumPy
Арифметические операции над массивами
Абсолютное значение
Тригонометрические функции
Показательные функции и логарифмы
Специализированные универсальные функции
Продвинутые возможности универсальных функций
Сохранение результатов в массиве
Сводные показатели
Векторные произведения
Универсальные функции: дополнительная информация
Глава 7. Агрегирование: минимум, максимум и все, что посередине
Суммирование значений в массиве
Минимум и максимум
Многомерные сводные показатели
Другие функции агрегирования
Пример: чему равен средний рост президентов США
Глава 8. Операции над массивами. Транслирование
Введение в транслирование
Правила транслирования
Транслирование. Пример 1
Транслирование. Пример 2
Транслирование. Пример 3
Транслирование на практике
Центрирование массива
Построение графика двумерной функции
Глава 9. Сравнения, маски и булева логика
Пример: подсчет количества дождливых дней
Операторы сравнения как универсальные функции
Работа с булевыми массивами
Подсчет количества элементов
Булевы операторы
Булевы массивы как маски
Ключевые слова and/or и операторы &/|
Глава 10. «Прихотливая» индексация
Возможности «прихотливой» индексации
Комбинированная индексация
Пример: выборка случайных точек
Изменение значений с помощью прихотливой индексации
Пример: разбиение данных на интервалы
Глава 11. Сортировка массивов
Быстрая сортировка в библиотеке NumPy: функции np.sort и np.argsort
Сортировка по строкам и столбцам
Частичная сортировка: секционирование
Пример: k ближайших соседей
Глава 12. Структурированные данные: структурированные массивы NumPy
Создание структурированных массивов
Более продвинутые типы данных
Массивы записей: структурированные массивы с дополнительными возможностями
Вперед, к Pandas
Часть III. Манипуляции над данными
с помощью
пакета Pandas
Глава 13. Знакомство с объектами библиотеки Pandas
Объект Series
Объект Series как обобщенный массив NumPy
Объект Series как специализированный словарь
Создание объектов Series
Объект DataFrame
DataFrame как обобщенный массив NumPy
Объект DataFrame как специализированный словарь
Создание объектов DataFrame
Объект Index
Объект Index как неизменяемый массив
Index как упорядоченное множество
Глава 14. Индексация и выборка данных
Выборка данных из объекта Series
Объект Series как словарь
Объект Series как одномерный массив
Индексаторы: loc и iloc
Выборка данных из объекта DataFrame
Объект DataFrame как словарь
Объект DataFrame как двумерный массив
Дополнительный синтаксис для индексации
Глава 15. Операции над данными в библиотеке Pandas
Универсальные функции: сохранение индекса
Универсальные функции: согласование индексов
Согласование индексов в объектах Series
Согласование индексов в объектах DataFrame
Универсальные функции: операции между объектами DataFrame и Series
Глава 16. Обработка отсутствующих данных
Компромиссы при обозначении отсутствующих данных
Отсутствующие данные в Pandas
None как значение-индикатор
NaN: отсутствующие числовые данные
Значения NaN и None в библиотеке Pandas
Типы данных с поддержкой пустых значений в Pandas
Операции над пустыми значениями
Выявление пустых значений
Удаление пустых значений
Заполнение пустых значений
Глава 17. Иерархическая индексация
Мультииндексированный объект Series
Плохой способ
Лучший способ: объект MultiIndex
Мультииндекс как дополнительное измерение
Методы создания объектов MultiIndex
Явные конструкторы MultiIndex
Названия уровней мультииндексов
Мультииндекс для столбцов
Индексация и срезы по мультииндексу
Мультииндексация объектов Series
Мультииндексация объектов DataFrame
Перегруппировка мультииндексов
Отсортированные и неотсортированные индексы
Выполнение операций stack и unstack над индексами
Создание и перестройка индексов
Глава 18. Объединение наборов данных: конкатенация и добавление в конец
Напоминание: конкатенация массивов NumPy
Простая конкатенация с помощью метода pd.concat
Дублирование индексов
Конкатенация с использованием соединений
Метод append()
Глава 19. Объединение наборов данных: слияние
и соединение
Реляционная алгебра
Виды соединений
Соединения «один-к-одному»
Соединения «многие-к-одному»
Соединения «многие-ко-многим»
Задание ключа слияния
Именованный аргумент on
Именованные аргументы left_on и right_on
Именованные аргументы left_index и right_index
Применение операций над множествами для соединений
Пересекающиеся имена столбцов: именованный аргумент suffixes
Пример: данные по штатам США
Глава 20. Агрегирование
и группировка
Данные о планетах
Простое агрегирование в библиотеке Pandas
groupby: разбиение, применение, объединение
Разбиение, применение и объединение
Объект GroupBy
Агрегирование, фильтрация, преобразование, применение
Задание ключа разбиения
Пример группировки
Глава 21. Сводные таблицы
Примеры для изучения приемов работы со сводными таблицами
Сводные таблицы «вручную»
Синтаксис сводных таблиц
Многоуровневые сводные таблицы
Дополнительные параметры сводных таблиц
Пример: данные о рождаемости
Глава 22. Векторизованные операции над строками
Знакомство со строковыми операциями в библиотеке Pandas
Таблица строковых методов в библиотеке Pandas
Методы, аналогичные строковым методам языка Python
Методы, использующие регулярные выражения
Прочие методы
Пример: база данных рецептов
Простая рекомендательная система для рецептов
Дальнейшая работа с рецептами
Глава 23. Работа с временными рядами
Дата и время в языке Python
Представление даты и времени в Python: пакеты datetime и dateutil
Типизированные массивы значений времени: тип datetime64 библиотеки NumPy
Даты и время в библиотеке Pandas: лучшее из обоих миров
Временные ряды библиотеки Pandas: индексация по времени
Структуры данных для временных рядов библиотеки Pandas
Регулярные последовательности: функция pd.date_range()
Периодичность и смещения дат
Передискретизация, временные сдвиги и окна
Передискретизация и изменение периодичности интервалов
Временные сдвиги
Скользящие окна
Пример: визуализация количества велосипедов в Сиэтле
Визуализация данных
Углубленное изучение данных
Глава 24. Увеличение производительности библиотеки Pandas: eval() и query()
Основания для использования функций query() и eval(): составные выражения
Использование функции pandas.eval() для эффективных операций
Использование метода DataFrame.eval() для выполнения операций по столбцам
Присваивание в методе DataFrame.eval()
Локальные переменные в методе DataFrame.eval()
Метод DataFrame.query()
Производительность: когда следует использовать эти функции
Дополнительные источники информации
Часть IV. Визуализация с помощью библиотеки Matplotlib
Глава 25. Общие советы по библиотеке Matplotlib
Импортирование matplotlib
Настройка стилей
Использовать или не использовать show()? Как отображать графики
Построение графиков в сценариях
Построение графиков из командной оболочки IPython
Построение графиков из блокнота Jupyter
Сохранение изображений в файлы
Два интерфейса по цене одного
Глава 26. Простые линейные графики
Настройка графика: цвета и стили линий
Настройка графика: пределы осей координат
Метки на графиках
Нюансы использования Matplotlib
Глава 27. Простые диаграммы рассеяния
Построение диаграмм рассеяния с помощью plt.plot
Построение диаграмм рассеяния с помощью plt.scatter
plot и scatter: примечание относительно производительности
Визуализация погрешностей
Простые планки погрешностей
Непрерывные погрешности
Глава 28. Графики плотности и контурные графики
Визуализация трехмерной функции
Гистограммы, разбиения по интервалам и плотность
Двумерные гистограммы и разбиение по интервалам
Функция plt.hist2d: двумерная гистограмма
Функция plt.hexbin: гексагональное разбиение по интервалам
Ядерная оценка плотности распределения
Глава 29. Настройка легенд на графиках
Выбор элементов для легенды
Задание легенды для точек разного размера
Отображение нескольких легенд
Глава 30. Настройка цветовых шкал
Настройка цветовой шкалы
Выбор карты цветов
Ограничение и расширение карты цветов
Дискретные цветовые шкалы
Пример: рукописные цифры
Глава 31. Множественные субграфики
plt.axes: создание субграфиков вручную
plt.subplot: простые сетки субграфиков
plt.subplots: создание всей сетки за один раз
plt.GridSpec: более сложные конфигурации
Глава 32. Текст и поясняющие надписи
Преобразования и координаты текста
Стрелки и поясняющие надписи
Глава 33. Настройка делений на осях координат
Основные и промежуточные деления осей координат
Сокрытие делений и/или меток
Уменьшение или увеличение количества делений
Экзотические форматы делений
Краткая сводка локаторов и форматеров
Глава 34. Настройка Matplotlib: конфигурации и таблицы стилей
Настройка графиков вручную
Изменение значений по умолчанию: rcParams
Таблицы стилей
Стиль по умолчанию default
Стиль FiveThirtyEight
Стиль ggplot
Стиль «байесовские методы для хакеров»
Стиль с темным фоном
Оттенки серого
Стиль Seaborn
Глава 35. Построение трехмерных графиков в библиотеке Matplotlib
Трехмерные точки и линии
Трехмерные контурные графики
Каркасы и поверхностные графики
Триангуляция поверхностей
Пример: визуализация ленты Мебиуса
Глава 36. Визуализация с помощью
библиотеки Seaborn
Анализируем графики Seaborn
Гистограммы, KDE и плотности
Графики пар
Фасетные гистограммы
Графики факторов
Совместные распределения
Столбиковые диаграммы
Пример: время прохождения марафона
Дополнительные источники информации
Другие графические библиотеки для Python
Часть V. Машинное обучение
Глава 37. Что такое машинное обучение
Категории машинного обучения
Качественные примеры прикладных задач машинного обучения
Классификация: предсказание дискретных меток
Регрессия: предсказание непрерывных меток
Кластеризация: определение меток для немаркированных данных
Понижение размерности: определение структуры немаркированных данных
Резюме
Глава 38. Знакомство с библиотекой Scikit-Learn
Представление данных в Scikit-Learn
Матрица признаков
Целевой массив
API статистического оценивания в Scikit-Learn
Основы API статистического оценивания
Пример обучения с учителем: простая линейная регрессия
Пример обучения с учителем: классификация набора данных Iris
Пример обучения без учителя: понижение размерности набора данных Iris
Обучение без учителя: кластеризация набора данных Iris
Прикладная задача: анализ рукописных цифр
Загрузка и визуализация цифр
Обучение без учителя: понижение размерности
Классификация цифр
Резюме
Глава 39. Гиперпараметры и проверка модели
Соображения относительно проверки модели
Плохой способ проверки модели
Хороший способ проверки модели: отложенные данные
Перекрестная проверка модели
Выбор оптимальной модели
Компромисс между систематической ошибкой и дисперсией
Кривые проверки в библиотеке Scikit-Learn
Кривые обучения
Проверка на практике: поиск по сетке
Резюме
Глава 40. Проектирование признаков
Категориальные признаки
Текстовые признаки
Признаки для изображений
Производные признаки
Подстановка отсутствующих данных
Конвейеры признаков
Глава 41. Заглянем глубже: наивная байесовская классификация
Байесовская классификация
Гауссов наивный байесовский классификатор
Полиномиальный наивный байесовский классификатор
Пример: классификация текста
Когда имеет смысл использовать наивный байесовский классификатор
Глава 42. Заглянем глубже: линейная регрессия
Простая линейная регрессия
Регрессия по комбинации базисных функций
Полиномиальные базисные функции
Гауссовы базисные функции
Регуляризация
Гребневая регрессия (L2-регуляризация)
Лассо-регрессия (L1-регуляризация)
Пример: предсказание велосипедного трафика
Глава 43. Заглянем глубже: метод опорных векторов
Основания для использования метода опорных векторов
Метод опорных векторов: максимизация отступа
Аппроксимация методом опорных векторов
За границами линейности: SVM-ядро
Настройка SVM: размытие отступов
Пример: распознавание лиц
Резюме
Глава 44. Заглянем глубже: деревья решений и случайные леса
Движущая сила случайных лесов: деревья принятия решений
Создание дерева принятия решений
Деревья принятия решений и переобучение
Ансамбли моделей: случайные леса
Регрессия с помощью случайных лесов
Пример: использование случайного леса для классификации цифр
Резюме
Глава 45. Заглянем глубже: метод главных компонент
Знакомство с методом главных компонент
PCA как метод понижения размерности
Использование метода PCA для визуализации: рукописные цифры
Что означают компоненты?
Выбор количества компонент
Использование метода PCA для фильтрации шума
Пример: метод Eigenfaces
Резюме
Глава 46. Заглянем глубже: обучение на базе многообразий
Обучение на базе многообразий: «HELLO»
Многомерное масштабирование (MDS)
MDS как обучение на базе многообразий
Нелинейные вложения: там, где MDS не работает
Нелинейные многообразия: локально линейное вложение
Некоторые соображения относительно методов обучения на базе многообразий
Пример: использование Isomap для распознавания лиц
Пример: визуализация структуры цифр
Глава 47. Заглянем глубже: кластеризация методом k средних
Знакомство с методом k средних
Максимизация математического ожидания
Примеры
Пример 1: применение метода k средних для распознавания рукописных цифр
Пример 2: использование метода k средних для сжатия цветов
Глава 48. Заглянем глубже: смеси Гауссовых распределений
Причины появления GMM: недостатки метода k средних
Обобщение EM-модели: смеси Гауссовых распределений
Выбор типа ковариации
GMM как метод оценки плотности распределения
Пример: использование метода GMM для генерации новых данных
Глава 49. Заглянем глубже: ядерная оценка плотности распределения
Обоснование метода KDE: гистограммы
Ядерная оценка плотности распределения на практике
Выбор ширины ядра путем перекрестной проверки
Пример: не столь наивный байес
Внутреннее устройство пользовательской модели
Использование пользовательской модели
Глава 50. Прикладная задача: конвейер распознавания лиц
Признаки HOG
Метод HOG в действии: простой детектор лиц
1. Получаем набор положительных обучающих образцов
2. Получаем набор отрицательных обучающих образцов
3. Объединяем наборы и выделяем HOG-признаки
4. Обучаем метод опорных векторов
5. Выполняем поиск лиц в новом изображении
Предостережения и дальнейшие усовершенствования
Дополнительные источники информации по машинному обучению
Об авторе
Иллюстрация на обложке