Привет, народ,

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

Узнайте, как настроить собственную версию сообщества databricks для экспериментов.



Как использовать Data Bricks Community Edition.
В этом посте вы узнаете, как получить свой Data Bricks Community Edition!medium.com



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

Я загрузил данные и загрузил их в блоки данных, используя File > UploadData to DBFS и просматривая набор данных.

Постановка задачи.Китайская автомобильная компания Geely Auto стремится выйти на рынок США, создав там свое производственное подразделение и производя автомобили на местном уровне, чтобы составить конкуренцию своим американским и европейским коллегам. Они заключили контракт с автомобильной консалтинговой компанией, чтобы понять факторы, от которых зависит цена автомобилей. В частности, они хотят понять факторы, влияющие на цены на автомобили на американском рынке, поскольку они могут сильно отличаться от цен на китайском рынке. Компания хочет знать:

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

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

  1. Начнем с импорта необходимых библиотек. (Я обычно импортирую библиотеки в одну ячейку, что помогает лучше понять код).

2. Давайте прочитаем данные.

3. Далее давайте посмотрим на форму данных

Набор данных состоит из 206 строк и 26 столбцов.

3. Проверяем на нули, сейчас нет прямого пути в pyspark, как в пандах, но придумали забавный способ найти нули, спасибо гуглу за это :)

Итак, набор данных чистый, нулей нет.

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

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

Базовый показатель RMSE довольно велик.

6. Быстро просматривая данные, я вижу, что набор данных состоит из комбинации категориальных и числовых столбцов, поэтому мы воспользуемся помощью StingIndexer и OneHotEncoding для обработки категориальных функций.

6. Последнее преобразование, которое нам нужно произвести, — это VectorAssembler, поскольку spark ML ожидает функции векторов.

Ознакомьтесь с моим объяснением трансформации важности



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

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

9. Давайте обучим модель на обучающих данных и сохраним модель для дальнейшего использования.

10. Давайте загрузим модель и преобразуем обучающий/тестовый набор, чтобы сгенерировать прогнозы для обучающего набора.

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

Весь блокнот для этого эксперимента доступен на моем гитхабе ЗДЕСЬ.

Следите за обновлениями, чтобы узнать больше подобного контента! Увидимся в следующем!! Счастливого обучения! Если вам нравится то, что вы читаете, следите за мной на linkedIN

Использованная литература: