Руслан Атаханович Назаров - Data Science для новичков стр 2.

Шрифт
Фон

17. Не бойтесь, что вы медленно учитесь. Главное учиться.

18. Найдите хобби. Пускай ваше хобби будет способом отвлечься от учебы. Это тоже необходимо. Умейте отдыхать! Возьмите пару недель или месяц, чтобы отдохнуть. Пока вы отдыхаете, мозг приводит ваши знания в порядок и находит неожиданные связи.

Глава 1. Подготовка данных


Data Science содержит три больших отдела:

1) получение и подготовка данных;

2) статистическая обработка данных;

3) машинное обучение.

Статистическая обработка нацелена на:

1) описание сгруппированных данных (медиана, среднее и т.п.);

2) описание взаимодействия между различными группами данных (корреляция и т.п.).

Другими словами, статистическая обработка требует понять данные, а значит и те реальные процессы, которые стоят за данными. Это важно учитывать. В конечном счете моя задача не просто получить корреляцию, а понять данные. Что это означает? Во-первых, я должен проверять как корреляцию, так и другие статистики, на вменяемость, на соответствие действительности. Во-вторых, именно в действительности я должен искать подсказки, какие тесты применить, какие метрики получить. Так, например, понимание данных можно получить и из других источников, не только за счет применения статистических тестов. Можно сделать предположения о процессах, отраженных в данных, на основании опыта, а уже затем проверить предположения с помощью статистики. Важно помнить, что математика  это только язык, который используют, чтобы описать действительность. Не надо подменять математикой саму действительность.

Машинное обучение нацелено на создание алгоритма, который позволит предсказывать целевой признак на основании заданных признаков в автоматизированном режиме. Другими словами, статистическая обработка позволяет понять процессы, а машинное обучение  предсказать процессы.

Однако начинается все с предварительной подготовки данных. В самом деле, если не подготовить данные, не убрать пропуски, дубликаты и т.п., то это повлияет на качество как статистической обработки, так и машинного обучения (или даже не позволит их выполнить). В этом разделе я займусь именно подготовкой данных.

Подготовка данных включает, но не ограничивается, следующие элементы:

1) проверка правильности формирования индекса, наименования столбцов (признаков). Например, может быть обнаружено, что в наименовании столбцов есть лишние пробелы;

2) проверка типа данных. Например, численные данные могут быть отмечены как объекты или наоборот;

3) поиск дубликатов;

4) очистка строковых данных от лишних символов. Например, наличие слэша там, где это очевидно неуместно;

5) обработка значений, которые очевидно являются ошибочными. Например, в столбце с количеством страниц указан жанр книги и т.п.;

6) создание новых признаков. Например, по значениям двух уже имеющихся столбцов можно создать третий;

7) укрупнение категорий в категориальных признаках;

Предупреждение об источнике данных

Источник данных находится по адресу https://www.kaggle.com/jealousleopard/goodreadsbooks. Мне неизвестна процедура, которую применял автор для сбора данных. Поэтому всегда надо помнить, что особенности именно данного набора могут оказать влияние на выводы. Идеально было бы самостоятельно собрать данные или использовать дополнительно иные сборки данных, но пока в этой методичке такая задача не стоит. Кроме того, сайт Goodreads с конца 2020 ограничил использование API и получение данных.

Почему при таких ограничениях я выбрал именно данный набор? Как я указывал выше, прежде всего, надо основываться на действительности, чтобы понять данные. А значит я должен разбираться или хотя бы понимать те объекты, тот предмет, которого касаются данные. Так как я много читаю, полагаю, что неплохо понимаю, за что можно поставить книге ту или иную оценку, как на это влияет количество страниц и прочее. Поэтому я выбрал именно эти данные.




Вижу, что данные можно разбить на две категории:

1) сведения о книге (название, автор, isbn, язык, количество страниц, дата публикации и издательство);

2) сведения о реакции читателей (средний рейтинг, количество отзывов, количество оценок).

Данные рассказывают не просто про книгу и не просто про реакцию на книгу, а про реакцию читателей, измеренную конкретными признаками, на книгу, также измеренную конкретными признаками. Если у меня нет специального задания по анализу, то я могу наметить стратегию исследования по имеющимся признакам. Так, например, может быть интересно, каким книгам чаще ставят положительные оценки? как зависит оценка книги от количества страниц в ней?

Сформулирую для себя общую цель  изучить от чего зависит оценка книги.

Таблица задает две оси: вертикальная  наблюдения, горизонтальная  признаки.

Метка для наблюдений  индекс, метка для признаков  название признаков (название столбцов). Поэтому, естественно, что подготовка данных должна начинаться с обследования меток. Однако индекс формируется автоматически в порядке возрастания от 0 до n (это поведение по умолчанию можно изменить). Названия столбцов были предоставлены вместе с данными, поэтому их-то отдельно и надо обследовать.




Вижу, что есть 12 признаков (нумерация начинается с 0 и продолжается до 11) и 11123 наблюдений (строк). Пропусков нет (количество объектов по столбцам одинаковое). Индекс у нас это RangeIndex. По типам данных заметно две проблемы. isbn помечен как объект, а isbn13 как int64. Кроме того, publication_date помечен как объект, хотя это очевидно дата. Изменю тип данных.



Вижу, что в publication_date появилось два пропущенных значения. Так как подобных строк всего две, я могу их удалить.



Запись выше надо читать так. В таблице db выбрать только те строки, у которых в столбце «publication_date» нет значения NaT. Значок тильды ~ означает «не». Метод isin проверяет наличие указанных данных в ячейке.

Здесь также важно, что я могу взять изначальную таблицу, отфильтровать ее, как мне это необходимо, а затем заменить изначальную таблицу отфильтрованной. Другими словами, изначально у меня была таблица db, после изменений я получаю таблицу с тем же названием db, но уже отфильтрованную.



Теперь я должен заняться дубликатами строк. Я могу искать либо полные дубликаты (данные в каждом столбце для строки полностью совпадают), либо искать дубликаты выборочно. Здесь надо обратить внимание, что isbn является уникальным идентификатором каждой изданной книги. Поэтому логично искать дубликаты только по этому признаку, так как книги вполне могут совпадать по иным признакам и это нормально.



Дубликатов по isbn13 нет. Но все-таки посмотрю дубликаты по названию и имени автора.



Такой подход позволяет понять, почему могут совпадать имя автора и название при различных isbn. Вижу, что, как правило, такие дубликаты  это аудиокниги. С этим придется разобраться отдельно. Для начала посмотрю, есть ли нулевое количество страниц у книг.



Таких книг 76. Что их объединяет? Посмотрю издательства.



Вижу, что в основном это издательства, которые выпускают аудиокниги. Это логично. Если у книги нет страниц, то это просто аудиокнига. Но посмотрим количество страниц для тех книг, которые выпускали эти издательства.


Код выше весьма любопытен. Как его прочитать? Берем таблицу db. В этой таблице ищем такие строки, в которых столбец равен 0. Далее, в отфильтрованной таким образом таблице, берем столбец publisher. После этого вызываем value_counts для подсчета количества и head для ограничения вывода результатов.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3