- •Об авторе
- •О научном редакторе
- •От издательства
- •Введение
- •Использование Python для data science
- •Для кого эта книга?
- •О чем эта книга?
- •Глава 1. Базовые знания о данных
- •Категории данных
- •Неструктурированные данные
- •Структурированные данные
- •Слабоструктурированные данные
- •Данные временных рядов
- •Источники данных
- •Веб-страницы
- •Базы данных
- •Файлы
- •Получение
- •Очистка
- •Преобразование
- •Анализ
- •Хранение
- •Питонический стиль
- •Выводы
- •Глава 2. Структуры данных Python
- •Списки
- •Создание списка
- •Использование общих методов списков
- •Использование срезов
- •Использование списка в качестве очереди
- •Использование списка в качестве стека
- •Использование списков и стеков для обработки естественного языка
- •Расширение функциональности с помощью списковых включений
- •Кортежи
- •Список кортежей
- •Неизменяемость
- •Словари
- •Список словарей
- •Добавление элементов в словарь с помощью setdefault()
- •Преобразование JSON в словарь
- •Множества
- •Удаление дубликатов из последовательности
- •Общие операции с множеством
- •Упражнение № 1: продвинутый анализ тегов фотографий
- •Выводы
- •NumPy
- •Установка NumPy
- •Создание массива NumPy
- •Выполнение поэлементных операций
- •Использование статистических функций NumPy
- •Упражнение № 2: использование статистических функций numpy
- •pandas
- •Установка pandas
- •pandas Series
- •Упражнение № 3: объединение трех серий
- •pandas DataFrame
- •Упражнение № 4: использование разных типов join
- •scikit-learn
- •Установка scikit-learn
- •Получение набора образцов
- •Преобразование загруженного датасета в pandas DataFrame
- •Разделение набора данных на обучающий и тестовый
- •Преобразование текста в числовые векторы признаков
- •Обучение и оценка модели
- •Создание прогнозов на новых данных
- •Выводы
- •Глава 4. Доступ к данным из файлов и API
- •Импортирование данных с помощью функции open()
- •Текстовые файлы
- •Файлы с табличными данными
- •Упражнение № 5: открытие json-файлов
- •Двоичные файлы
- •Экспортирование данных в файл
- •Доступ к удаленным файлам и API
- •Как работают HTTP-запросы
- •Библиотека urllib3
- •Библиотека Requests
- •Упражнение № 6: доступ к api с помощью requests
- •Перемещение данных в DataFrame и из него
- •Импортирование вложенных структур JSON
- •Конвертирование DataFrame в JSON
- •Выводы
- •Глава 5. Работа с базами данных
- •Реляционные базы данных
- •Понимание инструкций SQL
- •Начало работы с MySQL
- •Определение структуры базы данных
- •Вставка данных в БД
- •Запрос к базе данных
- •Упражнение № 8: объединение «один-ко-многим»
- •Использование инструментов аналитики баз данных
- •Базы данных NoSQL
- •Документоориентированные базы данных
- •Упражнение № 9: вставка и запрос нескольких документов
- •Выводы
- •Глава 6. Агрегирование данных
- •Данные для агрегирования
- •Объединение датафреймов
- •Группировка и агрегирование данных
- •Просмотр конкретных агрегированных показателей по MultiIndex
- •Срез диапазона агрегированных значений
- •Срезы на разных уровнях агрегирования
- •Добавление общего итога
- •Добавление промежуточных итогов
- •Выбор всех строк в группе
- •Выводы
- •Глава 7. Объединение датасетов
- •Объединение встроенных структур данных
- •Объединение списков и кортежей с помощью оператора +
- •Объединение словарей с помощью оператора **
- •Объединение строк из двух структур
- •Реализация join-объединений списков
- •Конкатенация массивов NumPy
- •Объединение структур данных pandas
- •Конкатенация датафреймов
- •Удаление столбцов/строк из датафрейма
- •Join-объединение двух датафреймов
- •Выводы
- •Глава 8. Визуализация
- •Распространенные способы визуализации
- •Линейные диаграммы
- •Столбчатые диаграммы
- •Круговые диаграммы
- •Гистограммы
- •Построение графиков с помощью Matplotlib
- •Установка Matplotlib
- •Использование matplotlib.pyplot
- •Работа с объектами Figure и Axes
- •Создание гистограммы с помощью subplots()
- •Совместимость Matplotlib с другими библиотеками
- •Построение графиков для данных pandas
- •Отображение данных геолокации с помощью Cartopy
- •Выводы
- •Глава 9. Анализ данных о местоположении
- •Получение данных о местоположении
- •Преобразование стандартного вида адреса в геокоординаты
- •Получение геокоординат движущегося объекта
- •Анализ пространственных данных с помощью geopy и Shapely
- •Поиск ближайшего объекта
- •Поиск объектов в определенной области
- •Объединение двух подходов
- •Упражнение № 15: совершенствование алгоритма подбора машины
- •Получение непространственных характеристик
- •Объединение датасетов с пространственными и непространственными данными
- •Выводы
- •Глава 10. Анализ данных временных рядов
- •Регулярные и нерегулярные временные ряды
- •Общие методы анализа временных рядов
- •Вычисление процентных изменений
- •Вычисление скользящего окна
- •Вычисление процентного изменения скользящего среднего
- •Многомерные временные ряды
- •Обработка многомерных временных рядов
- •Анализ зависимости между переменными
- •Выводы
- •Глава 11. Получение инсайтов из данных
- •Ассоциативные правила
- •Поддержка
- •Доверие
- •Лифт
- •Алгоритм Apriori
- •Создание датасета с транзакциями
- •Определение часто встречающихся наборов
- •Генерирование ассоциативных правил
- •Визуализация ассоциативных правил
- •Получение полезных инсайтов из ассоциативных правил
- •Генерирование рекомендаций
- •Планирование скидок на основе ассоциативных правил
- •Выводы
- •Глава 12. Машинное обучение для анализа данных
- •Почему машинное обучение?
- •Типы машинного обучения
- •Обучение с учителем
- •Обучение без учителя
- •Как работает машинное обучение
- •Данные для обучения
- •Статистическая модель
- •Неизвестные данные
- •Пример анализа тональности: классификация отзывов о товарах
- •Получение отзывов о товарах
- •Очистка данных
- •Разделение и преобразование данных
- •Обучение модели
- •Оценка модели
- •Упражнение № 19: расширение набора примеров
- •Прогнозирование тенденций фондового рынка
- •Получение данных
- •Извлечение признаков из непрерывных данных
- •Генерирование выходной переменной
- •Обучение и оценка модели
- •Выводы
248 Глава 12. Машинное обучение для анализа данных
изображений, которое умеет различать виды животных на основе предоставленных фотографий. Для этого гипотетического сценария у нас уже есть библиотека кода, которая может идентифицировать границы объекта (например, животного) на изображении. Таким образом, животное на фотографии можно превратить в характерный набор линий. Но как с помощью кода различить линии, изображающие двух разных животных, например кошку и собаку?
Традиционный подход к программированию заключается в создании правил, которые сопоставляют каждую комбинацию характерных линий с животным. К сожалению, такое решение потребует большого объема кода, и приложение может не справиться, если границы объектов на какой-то фотографии не будут соответствовать ни одному из правил, заданных вручную. Напротив, приложения, в основе которых лежат алгоритмы машинного обучения, не опираются на заранее определенную логику, а зависят от способности приложения автоматически обучаться на ранее просмотренных данных. Таким образом, приложение для разметки фотографий на основе МО будет искать закономерности в комбинациях линий просмотренных фотографий, а затем, исходя из статистики вероятности, делать прогнозы относительно того, какие животные изображены на новых фотографиях.
Типы машинного обучения
Специалисты по работе с данными различают несколько типов машинного обучения. Наиболее распространенные — это обучение с учителем (supervised learning) и обучение без учителя (unsupervised learning). Эта глава в основном посвящена обучению с учителем, но в данном разделе представлен краткий обзор обоих типов.
Обучение с учителем
Обучение с учителем использует размеченный датасет (называемый обучающим набором), чтобы натренировать модель на выдачу желаемого результата при получении новых, ранее неизвестных данных. Строго говоря, обучение с учителем — это техника выведения функции, которая сопоставляет входные данные обучающего набора с выходными данными. Вы уже видели пример обучения такого типа в главе 3, где мы использовали выборку отзывов о товарах, чтобы обучить модель предсказывать, какими будут отзывы о новом товаре — положительными или отрицательными.
Входные данные для алгоритма обучения с учителем могут представлять собой характеристики реальных объектов или событий. Например, можно
Типы машинного обучения 249
использовать характеристики выставленных на продажу домов (площадь, количество спален и ванных комнат и т. д.) в качестве входных данных для алгоритма прогнозирования цен на недвижимость. Цены будут выходными данными алгоритма. На наборе пар входных и выходных данных — характеристик домов и связанных с ними цен — необходимо обучить алгоритм. Тогда можно будет подавать на вход алгоритма характеристики новых домов и на выходе получать их предполагаемую стоимость.
Кроме того, существуют алгоритмы обучения с учителем, которые предназначены для работы не с характеристиками, а с данными наблюдений, сведениями, собранными путем наблюдения за работой или поведением. В качестве примера рассмотрим временной ряд с информацией, поступающей с датчиков, которые контролируют уровень шума в аэропорту. Эти наблюдения об уровне шума можно передать алгоритму машинного обучения вместе со сведениями о времени суток и дне недели, чтобы научить его предсказывать уровень шума в ближайшие несколько часов. В данном примере время и дни недели являются входными данными, а уровень шума — выходными. Другими словами, алгоритм разрабатывается для прогнозирования данных будущих наблюдений.
ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ В МАШИННОМ ОБУЧЕНИИ
Впрограммированиивходнымиданными(input)обычноназываютинформацию, которую получает функция, скрипт или приложение. Впоследствии из входных данных получают выходные данные (output). Это значения, которые функция, скрипт или приложение возвращают. Однако в контексте машинного обучения с учителем входные и выходные данные имеют несколько иное значение. Когда модельобучается,онаполучаетпарывходныхивыходныхданных,напримеротзывыопродукте(входныеданные)иихкласс:положительныйилиотрицательный (выходныеданные).Затем,послеобучениямодели,предоставляютсятольконовые входные значения, и модель генерирует соответствующие выходные данные на основе того, чему она научилась на примерах пар «вход — выход».
ВходныеданныемоделиМОмогутсостоятьизоднойилинесколькихпеременных,
которые называются независимыми переменными (independent variables), или
признаками (features). А выходное значение обычно представляет собой одну переменную, известную как целевая (target), или зависимая (dependant), переменная, поскольку выходные данные зависят от входных.
Предсказание стоимости дома или уровня шума — типичный пример регрессии, распространенного метода обучения с учителем для прогнозирования непрерывных величин. Другой распространенный метод обучения