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

Давайте начнем проводить EDA по очень серьезной проблеме, с которой сегодня сталкивается мир.

ДИАБЕТ. Более 88 миллионов взрослых жителей США — более трети — страдают преддиабетом, и более 84 % из них не знают, что он у него есть.



База данных по диабету индейцев пима
Прогнозирование начала диабета на основе диагностических мерwww.kaggle.com



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

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

Давайте начнем

1. Постановка цели:

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

2. Чтение данных

Импортируйте все связанные библиотеки

3. Понимание данных

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

# 3.1. Просмотр сведений о фрейме данных

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

Это помогает нам проверить аккуратность данных. Например, поле age всегда должно быть типа int, оно не может быть строкового типа.

# 3.2. Просмотрите 5 лучших записей, чтобы лучше понять данные

Наблюдения:

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

# 3.3. Описывать различные свойства данных

# 3.4. Постарайтесь понять результаты

Наблюдения:

  • Есть только два исхода 0 и 1, 0 означает отсутствие диабета, а 1 означает, что у человека диабет.
  • Набор данных выглядит довольно несбалансированным, так как есть 1316 здоровых людей и всего 684 человека с диабетом.

# 3.5. Чтобы проверить, есть ли в наборе данных нулевые значения

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

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

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

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

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

Из приведенной выше таблицы видно, что «минимальные» значения для инсулина, кровяного давления, толщины кожи, ИМТ и уровня глюкозы больше не равны 0. Наша очистка данных сработала. :-)

5. Анализ данных

Двумерный анализ:

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

# 5.1. Точечная диаграмма

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

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

Чего ждать? Я должен сделать это 8C2 раза = 28 графиков :-(

# 5.2. Парные графики

Немного хороших новостей! парный график может сделать все за вас с помощью всего одной строки кода

sns.pairplot(df,hue='Результат')

Скриншот такой большой, что я поместил только его часть. (Попробуйте построить приведенный выше график на своей машине).

Как только вы построите графики, вы сможете увидеть, что (глюкоза, инсулин), (толщина кожи, ИМТ) полезны для классификации результатов.

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

# 5.3. Коэффициент ранговой корреляции Спирмена

Близость к 1 указывает на очень хорошие отношения

Близость к -1 указывает на очень плохую связь

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

  • Возраст-Беременности
  • Толщина кожи-ИМТ
  • Глюкоза-инсулин

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

Одномерный анализ

В одномерном анализе мы анализируем результаты по одной переменной за раз.

# 5.4. График плотности или график распределения

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

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

Наблюдения:

  • Кривая скошена вправо, что указывает на наличие выбросов.

# 5.5. Разделение фреймов данных на основе результатов

Теперь мы разделим данные на два разных фрейма данных на основе результатов, это будет полезно при выполнении одномерного анализа.

Все записи с диабетом копируются во фрейм данных Diab_Yes

Все записи без диабета копируются в фрейм данных Diab_No.

# 5.6. PDF и CDF

Теперь мы построим PDF и CDF функций, чтобы определить лежащие в их основе закономерности.

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

# 5.7. Коробчатые диаграммы

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

Ниже приведен снимок экрана с блочной диаграммой для функции «Глюкоза».

Наблюдения:

  • В характеристиках глюкозы есть выбросы.
  • Медиана уровня глюкозы для здоровых людей составляет ~ 110, тогда как для человека с диабетом ~ 145.
  • Если уровень глюкозы ‹=~80, диабета нет.
  • Если уровень глюкозы> ~ 80 и ‹ ~ 125, то вероятность диабета очень низкая.
  • Если уровень глюкозы ›= ~125 и ‹~175, то велика вероятность диабета.
  • Если уровень глюкозы >~175, то у человека диабет.

Заключение

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

Ссылки

https://www.appliedroots.com/

https://www.kaggle.com/uciml/pima-indians-diabetes-database

https://www.analyticsvidhya.com/blog/2021/02/introduction-to-exploratory-data-analysis-eda/