Kaggle за 30 минут разбираемся с соревнованием House Prices

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

Перед нами стоит задача предсказания стоимости дома на основе множества признаков (фич), вроде расположения, площади, количества комнат, наличия гаража и т.д.

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

Данные состоят из четырех файлов:

  • train.csv – обучающая (тренировочная) выборка.
  • test.csv – тестовые данные, на основе которых мы будем делать предсказания.
  • data_description.txt – полное описание каждого столбца.
  • sample_submission.csv – пример того, как должен выглядеть наш ответ (сабмит).

Весь код воспроизводится в ячейках jupyter notebook .

Для начала, загружаем тестовую и тренировочную выборки.

Определим размеры датасета. Для анализа будем использовать тренировочную часть.

Получаем (1460, 81), а именно 81 столбец и 1460 строк.Получаем (1460, 81), а именно 81 столбец и 1460 строк.

Обзор данных – целевая переменная

Первое, что мы должны сделать – посмотреть на нашу целевую переменную SalePrice .

Kaggle за 30 минут разбираемся с соревнованием House Prices

Создается впечатление, что цена дома существенно отклоняется от нормального распределения:

  • Стандартное отклонение слишком велико.
  • Минимум больше 0 (что логично для цен на недвижимость).
  • Существует большая разница между минимальным значением и 25-м процентилем.
  • Разница между 75-м процентилем и максимумом больше, чем 25-й процентиль и максимум.

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

Kaggle за 30 минут разбираемся с соревнованием House Prices

Как мы и полагали, распределение далеко от идеального. Проведем больше наблюдений:

  • Ассиметрия: 1.882876.
  • Эксцесс: 6.536282.

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

Kaggle за 30 минут разбираемся с соревнованием House Prices

Этот метод построения признаков исправил ситуацию. Теперь наша задача – совершить логарифмирование не просто испытательным путем на графике, а применить данный метод ко всей тренировочной выборке:

Обзор данных – корреляция

Теперь посмотрим, с какими признаками коррелирует целевая переменная SalePrice :

На таком графике непросто отобрать нужные нам “фичи”.На таком графике непросто отобрать нужные нам “фичи”.

Попробуем усеченный вариант и сократим количество коррелирующих признаков до 10:

Kaggle за 30 минут разбираемся с соревнованием House Prices

Теперь мы видим, что лучше всего SalePrice коррелирует с GrLivArea и OverallQual . Проверим эти два признака на наличие выбросов:

Kaggle за 30 минут разбираемся с соревнованием House Prices Kaggle за 30 минут разбираемся с соревнованием House Prices

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

Очистка данных и отбор признаков

Эта строчка кода выведет топ-20 пропущенных значений:

Kaggle за 30 минут разбираемся с соревнованием House Prices

На диаграмме масштаб пропущенных значений будет виден лучше:

Kaggle за 30 минут разбираемся с соревнованием House Prices

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

Исправим проблему на объединенных данных.

Теперь мы можем полноценно разобраться с пропущенными данными.

Отлично, мы справились с основной проблемой. Не стоит также забывать о категориальных признаках.

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

Моделирование

Так как в соревновании House Prices перед участниками стоит задача регрессии, использовать мы будем соответствующие модели.

Возьмем усредненное значение от обеих моделей:

Создадим датафрейм, чтобы выложить наше решение.

Заключение

Цель этой статьи – предоставить вам базовое понимание “пайплайна”, который необходим для успешного покорения Kaggle. Сюда входят:

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

Поиск лучшего решения на соревновании Kaggle – это целое искусство, освоить которое вы сможете, комбинируя самые разнообразные техники с нестандартными методами.

Если вы только начинаете путь в профессию и еще не определились со специализацией, подумайте о применении методов науки о данных в медицинской отрасли: сейчас это одно из самых перспективных направлений. Образовательная онлайн-платформа GeekBrains проводит набор на факультет Data Science в медицине, на котором студенты научатся с нуля решать задачи в области медицины. Обучение длится 18 месяцев, плюс 6 месяцев занимает практика по медицинской специализации. По итогам получите 15 проектов в портфолио и гарантию трудоустройства.

Вы пропустили

AEGIS Algorithms Android Angular Apache Airflow Apache Druid Apache Flink Apache Spark API API Canvas AppSec Architecture Artificial Intelligence Astro Authentication Authorization AutoGPT AWS AWS Aurora AWS Boto3 AWS EC2 AWS Lambda Azure Babylon.js Backend bash Beautiful Soup Bento UI Big Data Binary Tree Browser API Bun Career Cassandra Charts ChatGPT Chrome Extension Clean Code CLI ClickHouse Coding Codux Combine Compose Computer Context Fusion Copilot Cosmo Route CProgramming cron Cryptography CSS CTF Cypress DALL-E Data Analysis Data science Database dbt dbt Cloud deno Design Design Patterns Detekt Development Distributed Systems Django Docker Docker Hub Drizzle DRY DuckDB Express FastAPI Flask Flutter For Beginners Front End Development Game Development GCN GCP Geospatial Git GitHub Actions GitHub Pages Gitlab GMS GoFr Golang Google Google Sheets Google Wire GPT-3 GPT3 Gradio Gradle Grafana Graphic Design GraphQL gRPC Guidance HMS Hotwire HTML Huawei HuggingFace IndexedDB InfoSec Interview iOS Jackknife Java JavaScript Jetpack Compose JSON Kafka Kotlin Kubernetes LangChain Laravel Linux LlaMA LLM localStorage Logging Machine Learning Magento Math Mermaid Micro Frontends Mobile Mobile App Development mondayDB MongoDB Mongoose MySQL Naming NestJS NET NetMock Networks NextJS NLP Node.js Nodejs NoSQL NPM OOP OpenAI OTP Pandas PDF PHP Playwright Plotly Polars PostgreSQL Prefect Productivity Programming Prometheus Puppeteer Pushover Python Pytorch Quarkus Rabbitmq RAG Ramda Raspberry Pi React React Native Reactor Redis REST API Revolut Riverpod RProgramming Ruby Ruby on Rails Rust Scalene SCDB ScyllaDB Selenium Servers Sklearn SLO SnowFlake Snowkase Software Architecture Software Development Solara Solid Spring Boot SQL SQLite Streamlit SudoLang Supabase Swift SwiftUI Tailwind CSS Taipy Terraform Testing Transformers TURN TypeScript Ubuntu UI Design Unix UX UX Design Vim Vite VSCode Vue Web Architecture Web Components Web Development Web Frameworks Web Scraping Web-разработка Webassembly Websocket Whisper Widgets WordPress YAML YouTube Zed Наука о данных Разное Тренды

Как исследовать и визуализировать данные МО для обнаружения объектов на изображениях