Skip to content

Проект по обработке пропущенных значений в данных о пассажирах Титаника с использованием библиотек Python Matplotlib и Seaborn.

License

Notifications You must be signed in to change notification settings

MindlessMuse666/missing-data-processing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Обработка и визуализация данных о пассажирах Титаника MIT-License image

Проект по дисциплине: МДК 13.01 Основы применения методов искусственного интеллекта в программировании

Практическое занятие №3: Обработка пропущенных значений и визуализация данных.

1. Введение

В рамках данного практического занятия была выполнена обработка пропущенных значений в данных о пассажирах Титаника с использованием различных методов, а также визуализация данных с применением библиотек Python Matplotlib и Seaborn. Целью работы являлось получение навыков работы с пропущенными данными и визуализации для их анализа и представления.

2. Скриншоты выполненного задания

2.1. Скрипт main.py

main.py

2.2. Скрипт missing_data_handler.py

missing_data_handler.py

2.3. Скрипт visualizer.py

visualizer.py

3. Методика и подходы

3.1. Методы

В ходе работы применялись следующие методы обработки пропущенных значений:

  • Удаление строк с пропущенными значениями: Простой, но потенциально приводящий к потере информации, метод.
  • Заполнение пропущенных значений средним/медианным: Заполнение пропущенных значений статистикой по столбцу.
  • Интерполяция: Заполнение пропущенных значений на основе существующих данных.
  • KNN Imputation: Заполнение пропущенных значений с использованием алгоритма K ближайших соседей.
  • Предсказание с использованием линейной регрессии: Использование модели машинного обучения для предсказания пропущенных значений.

Также использовались следующие методы визуализации данных:

  • Тепловая карта: для визуализации матрицы пропущенных значений.
  • Графики сравнения: для оценки изменений в данных после применения различных методов обработки пропусков.

3.2. Алгоритмы

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

  • Алгоритм удаления строк: Простое удаление строк, содержащих NaN.
  • Алгоритмы вычисления среднего и медианы: Стандартные статистические алгоритмы.
  • Алгоритм линейной интерполяции: Заполнение пропусков на основе линейной зависимости между соседними точками.
  • Алгоритм KNN Imputation: Поиск k ближайших соседей для каждой записи с пропущенным значением и заполнение пропусков на основе значений соседей.
  • Алгоритм линейной регрессии: Обучение модели линейной регрессии для предсказания пропущенных значений.

3.3. Подходы

  • Модульность: Код организован в отдельные модули (data_loader.py, missing_data_handler.py, feature_engineer.py, visualizer.py, utils.py), что улучшает читаемость и облегчает поддержку.
  • Объектно-ориентированное программирование (ООП): Использованы классы для представления различных сущностей (загрузчик данных, обработчик пропущенных значений, визуализатор).
  • Функциональное программирование: Использованы функции для выполнения конкретных задач (например, print_results).

3.4. Допущения и ограничения

  • Предполагается, что URL, указанный для загрузки данных, является доступным и содержит корректные CSV-данные.
  • Качество предсказания пропущенных значений с помощью линейной регрессии напрямую зависит от качества и релевантности выбранных предикторов.

3.5. Инструменты, библиотеки и технологии

  • Python: основной язык программирования.
  • Pandas: для загрузки, обработки и анализа данных.
  • Scikit-learn: для использования алгоритмов машинного обучения (KNN Imputation, Linear Regression) и предварительной обработки данных (LabelEncoder, StandardScaler).
  • Matplotlib: для создания статических графиков.
  • Seaborn: для улучшения визуализации графиков.

4. Результаты

4.1. Краткое описание данных

Данные были взяты из открытого репозитория Seaborn по ссылке: https://raw.githubusercontent.com/mwaskom/seaborn-data/master/titanic.csv. Формат данных - CSV. Набор данных содержит информацию о пассажирах Титаника, включая их возраст, пол, класс билета, стоимость, выживаемость и другие параметры. Наличие пропущенных значений в некоторых признаках (в частности, в age и embarked) требует применения методов обработки пропусков.

4.2. Предварительная обработка данных

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

4.3. Графики и диаграммы

4.3.1. Тепловая карта пропущенных значений

Тепловая карта пропущенных значений

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

4.3.2. Сравнение распределений после заполнения средним

! Сравнение распределений до и после заполнения средним

График показывает сравнение распределения возраста до и после заполнения пропущенных значений средним.

4.3.3. Сравнение распределений после заполнения медианой

Сравнение распределений до и после заполнения медианой

График показывает сравнение распределения возраста до и после заполнения пропущенных значений медианой.

4.3.4. Сравнение данных до и после интерполяции (fare)

Сравнение распределений после заполнения средним

График показывает исходные и интерполированные значения fare.

4.3.5. KNN Imputation (age и fare)

KNN Imputation

График показывает результаты заполнения пропусков с использованием KNN Imputation (визуализация распределения age и fare до и после KNN).

5. Анализ результатов

5.1. Вывод консоли

Консольный_вывод_1

Консольный_вывод_2

Консольный_вывод_3

Консольный_вывод_3

  • Разные методы обработки пропущенных значений оказывают различное влияние на распределение данных.
  • Удаление строк с пропущенными значениями может привести к значительной потере данных.
  • Заполнение средним или медианой сохраняет размер датасета, но может исказить распределение.
  • Интерполяция подходит для данных, где значения изменяются плавно.
  • KNN Imputation учитывает значения других признаков при заполнении пропусков.
  • Предсказание с использованием линейной регрессии позволяет учесть взаимосвязи между признаками, но требует предварительной подготовки данных (кодирование категориальных признаков, масштабирование).

5.2. Обсуждение возможных улучшений

  • Использование более сложных моделей машинного обучения для предсказания пропущенных значений (например, Random Forest, Gradient Boosting).
  • Оценка качества заполнения пропущенных значений с использованием кросс-валидации.
  • Анализ влияния различных методов обработки пропущенных значений на результаты последующего анализа данных (например, на точность модели классификации выживаемости).
  • Рассмотрение других стратегий выбора предикторов для модели линейной регрессии.

6. Заключение

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

7. Лицензия

Этот проект распространяется под лицензией MIT - смотрите файл LICENSE для деталей.

8. Автор

Бедин Владислав (MindlessMuse666)

About

Проект по обработке пропущенных значений в данных о пассажирах Титаника с использованием библиотек Python Matplotlib и Seaborn.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages