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

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

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

Содержание

  • Рыночные возможности
  • Сбор данных.
  • Перевод данных.
  • Очистка данных.
  • Исследовательский анализ данных
  • Модель здания
  • Будущая работа

Рыночные возможности

Согласно недавнему демографическому опросу, проведенному Главным статистическим управлением Саудовской Аравии, большинство семей владеют как минимум двумя автомобилями. Из-за многих глобальных и региональных финансовых тенденций многим семьям экономически сложно владеть новыми автомобилями, поэтому все больше семей рассматривают подержанные автомобили в качестве своего первого варианта.

Поскольку система общественного транспорта в Саудовской Аравии все еще находится в стадии разработки, жители Саудовской Аравии в значительной степени зависят от личных автомобилей в своих ежедневных поездках на работу. Кроме того, недавнее увеличение налога на добавленную стоимость (НДС) значительно повлияло на рынок, что привело к бешеному росту рынка подержанных автомобилей.

Чтобы соответствовать видению 2030 года в отношении качества жизни людей в Саудовской Аравии, этот проект поможет большему количеству людей получить необходимую информацию для принятия мудрых решений при покупке или продаже подержанных автомобилей в соответствии с их финансовым положением.

Этот документ проведет вас через процесс, который мы использовали в этом проекте, от сбора данных до построения модели.

1 — Сбор данных.

2 — Преобразование данных.

3 — Очистка данных.

4 — Исследовательский анализ данных.

5 — Построение модели.

Шаг 1: Сбор данных

Для сбора данных мы искали популярные веб-сайты, продающие автомобили в Саудовской Аравии. Syarah.com был хорошим выбором для парсинга нужных нам данных. Собранные данные относятся к разделу подержанных автомобилей на веб-сайте. На странице каждого автомобиля были фотографии автомобиля и дополнительная информация, однако нас интересовали только технические характеристики автомобиля.

Решив, где и какие данные собирать, мы использовали пакет Selenium для Python для сбора данных с веб-сайта Syarah.

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

Шаг 2. Преобразование данных

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

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

Во-вторых, для столбца «тип» мы не смогли правильно перевести его с помощью внешней библиотеки, потому что слова в нем были в основном английскими брендами, написанными арабскими алфавитами.

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

Процесс, которому мы следовали при переводе, был следующим:

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

2 — Перевести словарь. Чтобы перевести арабский словарь на английский, мы создали список, содержащий то же уникальное значение, но на английском языке, а затем заменили эти значения.

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

Обзор набора данных

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

Мы загрузили наш набор данных в Kaggle для поддержки учебного сообщества.



Шаг 3. Очистка данных

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

Столбец "Цена": это был самый важный столбец, который нуждался в очистке, поскольку он был целевым столбцом для нашего регрессионного анализа. В колонке указаны цены автомобилей, но у некоторых автомобилей цена была отмечена как «договорная с покупателем». Мы исправили это, установив оборотную цену на ноль и добавив еще один столбец под названием «оборотная» логического типа. Таким образом, если цена автомобиля договорная, мы меняем цену на ноль, и значение в столбце оборотной будет True.

Еще одно изменение, которое мы внесли в столбец цены, — изменение его типа с объекта на целое число.

Повторяющиеся значения. Мы удалили повторяющиеся значения во всех наших столбцах.

Отсутствующие значения:

  • Столбец «Происхождение»: мы заполнили любое отсутствующее значение «Неизвестно».

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

Созданная нами функция очистки называется Clean_Na. Он перебирает каждую строку в целевом столбце и заменяет отсутствующее значение режимом, используя функцию, которую мы создали ранее. Затем он возвращает очищенный целевой столбец.

Мы использовали эту функцию для остальных столбцов, в которых необходимо заполнить отсутствующие значения, а именно:

  • Опции
  • Размер двигателя
  • Gear_Type

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

Нерелевантные столбцы. У нас было два столбца (ссылка и условие), которые не имели отношения к нашему исследованию, поэтому мы решили их удалить.

После процесса очистки наш набор данных теперь имеет 8035 строк и 13 столбцов. Поскольку наш набор данных теперь переведен и предварительно обработан, мы готовы использовать его для EDA и построения модели машинного обучения.

Шаг 4. Исследовательский анализ данных

  • Топ 6 популярных марок автомобилей.
OUTPUT:
Toyota       1270
Hyundai       719
Ford          512
Chevrolet     424
Nissan        362
Kia           268
  • Самая популярная модель автомобиля по марке.

Этот график показывает каждую марку и ее 5 самых популярных автомобилей.

  • Ценовой диапазон для ведущих брендов.

Мы хотели изучить ценовые тенденции для каждого бренда. Kia и Hyundai, кажется, имеют наименьшие цены и ассортимент. С другой стороны, Toyota и Chevrolet имеют самые высокие цены и ассортимент. Кроме того, у Toyota и Nissan есть несколько аутсайдеров.

  • Цены ведущих брендов в течение года.

Вот еще сравнение цен, но за последние 10 лет.

  • Обзор разнообразия автомобилей в нашем наборе данных

Шаг 5. Создание моделей

Мы построили две модели Random Forest для нашего проекта. Первая модель - это классификационная модель, позволяющая предсказать, является ли цена автомобиля предметом переговоров или нет. Вторая — это регрессионная модель для прогнозирования цены автомобиля.

Во-первых, мы создали две функции, чтобы использовать их позже при предварительной обработке данных. Первая — это стандартная функция масштабирования, используемая для масштабирования числовых столбцов. Вторая — это функция бинаризации, которая используется для прямого кодирования нечисловых столбцов.

Стандартная функция масштабирования

Функция бинаризации

5.1 Модель классификации с использованием случайного леса

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

5.1.1 Предварительная обработка

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

OUTPUT:
False    5509
True     2526

Как показано выше, существует огромный разрыв между оборотными (истинными) и необоротными (ложными) автомобилями. Чтобы уменьшить этот разрыв, мы взяли 2526 строк, в которых столбец согласованный = истина, из нашего набора данных, а затем добавили его в набор данных, который имеет 2526 строк, в которых столбцы согласованные = ложь. Такой способ гарантирует, что они оба в равной степени существуют в нашей модели.

Наконец, мы перемешиваем строки, чтобы модель не выбирала шаблон на основе порядка значений.

Проверьте количество истинных и ложных значений

OUTPUT:
True     2526
False    2526

Теперь, когда оба значения имеют равные числа, мы можем начать работать над нашей моделью.

Масштабирование

Мы использовали созданную ранее функцию масштабирования и применили ее к выбранным числовым столбцам.

Разработка функций

Примените нашу функцию бинаризации к нечисловым значениям.

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

5.1.2 Построение модели

  • Разделить данные на Train и Test
  • Построить модель

Оценка модели

Обучить счет

Данные поезда получили высокую точность 98 %. точность составила 99 %, а отзывы — 96 %.

Оценка теста

Результаты теста были ниже, чем у поезда: точность 64%, точность 67% и отзыв 56%.

5.2 Модель регрессии с использованием случайного леса

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

5.1.1 Предварительная обработка

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

  • Масштабирование
  • Разработка функций
  • Объединение наборов данных

5.1.2 Построение модели

  • Разделить данные на Train и Test
  • Построить модель

Оценка модели

Оценка поезда

Оценка данных обучения: 97%

  • Средняя абсолютная ошибка: 5379
  • Среднеквадратическая ошибка: 148573430
  • Среднеквадратичная ошибка: 12189

Оценка теста

Оценка тренировочных данных: 76%

  • Средняя абсолютная ошибка: 17268
  • Среднеквадратическая ошибка: 1799775345
  • Среднеквадратичная ошибка: 42423

Результат

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

Если мы введем эти значения детали автомобиля:

  • Проверить, является ли цена предметом переговоров или нет (Модель классификации):

Классификационная модель вернула False, что означает, что автомобиль не подлежит торгу. Продавцу рекомендуется указать цену за автомобиль.

  • Прогнозируйте цену автомобиля (регрессионная модель)

Регрессионная модель вернула подходящую цену автомобиля на рынке Саудовской Аравии, которая составляет 54 890 SAR.

Будущая работа

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

Мы улучшим безопасность и проверку нашего веб-приложения. Будут добавлены ограничения на поля ввода, чтобы пользователь не мог вставить недопустимые значения. Кроме того, мы защитим наш сервер с помощью JSON Web Token (JWS).

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