Набор данных состоит из 550 069 строк и 12 столбцов. Столбцы состоят из следующего:

  • User_ID (непрерывное числовое значение)
  • Product_ID (буквенно-цифровое значение)
  • Пол (двоичный -M / F)
  • Возраст (в ящиках 5 типов: 0–17, 18–25,26–35,36–45,46–50,51–55,55 +)
  • Занятие
  • Категория города (3 типа: A, B, C)
  • Stay_In_Current_City_Years (в 4 категориях: 1,2,3,4+)
  • Семейное положение (двоичное значение)
  • Product_Category_1 (числовое значение)
  • Product_Category_2 (может или может не иметь значения)
  • Product_Category_3 (может или может не иметь значения)
  • Покупка (числовое значение, а также целевая переменная)

Как мы видим, этот набор данных требует регрессивного подхода, поскольку выходная переменная является непрерывной по своей природе. Прежде всего, я бы проверил, есть ли в этом наборе данных какие-либо отсутствующие значения или значения NaN. Это можно сделать с помощью простой строки кода dataframe.isnull().sum()

Чтобы заполнить эти недостающие значения, мы сначала анализируем, в какой категории есть недостающие значения. Категории (атрибуты): Product_Category_2 и Product_Category_3. Эти атрибуты не требуют замены на среднее значение по очевидным причинам, но их можно заменить нулевым или более низким значением, чтобы убедиться, что его вклад в обучение модели очень невелик. Здесь я даю ему нулевое значение с помощью dataframe.fillna(0)

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

  • LabelEncoder: простой пакет от sklearn.preprocessing, который преобразует категориальные данные в числовые данные и присваивает им значение, которое начинается от 0 до количества категорий, на которые были разделены значения данных. Пример: Столбец данных содержит значения мужского и женского пола. Когда кодировщик меток применяется к этому столбцу, значения данных преобразуются в Женский - 0 и Мужской-1. Аналогично тому, как мы получили для большего количества категорий, данные получают более высокие числовые значения.
  • OneHotEncoder: OneHotEncoder преобразует категориальные данные в двоичные данные. Пример: предположим, что набор данных имеет 4 категории: красный, зеленый, синий и черный. OneHotEncoder присваивает каждому значению двоичное значение и преобразует столбец в 4 разных столбца: is_Red, is_Green, is_Blue и is_Black. Для каждой строки только один столбец будет иметь значение 1, а остальные будут нулями.

Я буду использовать LabelEncoder, поскольку в этом наборе данных слишком много категорий и многие столбцы требуют кодирования. Если бы я использовал OneHotEncoder, он преобразовал бы категории во множество столбцов, и это увеличило бы сложность набора данных для модели.

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

Для части 2 нажмите эту ссылку.