Разведочный анализ данных

Сквозное машинное обучение

Joshua Stapleton

Machine Learning Engineer

Процесс разведочного анализа данных

  • Изучение и анализ набора данных
  • Понимание набора данных
  • Визуализация набора данных
  • Характеристика / классификация набора данных

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

Сквозное машинное обучение

Изучение данных

df.head()

  • Показывает первые строки набора данных
  • Даёт обзор структуры данных
# Print the first 5 rows
print(heart_disease_df.head())

Первые 5 строк DataFrame о сердечных заболеваниях. Результат вызова df.head().

df.info()

  • Сводка по признакам
  • Показывает ненулевые записи и типы признаков
# Print out details
print(heart_disease_df.info())

Сводная информация о DataFrame о сердечных заболеваниях. Результат вызова df.info().

Сквозное машинное обучение

Баланс классов

df.value_counts()

  • Подсчитывает уникальные вхождения каждого класса
  • Класс: наличие или отсутствие сердечного заболевания (1/0)
  • Важно для построения модели
# print the class balance
print(heart_disease_df['target'].value_counts(normalize=True))

Баланс классов в целевом столбце DataFrame о сердечных заболеваниях. Результат вызова .value_counts() на целевом столбце.

Сквозное машинное обучение

Пропущенные значения

  • Могут приводить к ошибкам
  • Нерепрезентативные, смещённые результаты

Используйте df.isnull()

  • Проверяет наличие пустых и пропущенных значений
  • Применяется к столбцу или набору столбцов

Использование

# check whether all values in a column are null
print(heart_disease_df['oldpeak'].isnull().all())
True
Сквозное машинное обучение

Выбросы

  • Аномальные значения

    • Ошибки измерения
    • Ошибки ввода данных
    • Редкие события
  • Могут искажать качество модели

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

    • Редкие значения
    • Обнаружение: используйте boxplot или IQR

Визуализация выброса.

Сквозное машинное обучение

Визуализация данных

Визуализации показывают:

  • Общие тенденции
  • Пропущенные значения и выбросы

Другие виды визуализаций:

  • Оценка плотности ядром
  • Эмпирические функции распределения
  • Двумерные распределения
df['age'].plot(kind='hist')
plt.xlabel('Age')
plt.ylabel('Frequency')
plt.show()

Визуализация распределения возраста в наборе данных.

1 https://seaborn.pydata.org/tutorial/distributions.html, https://app.datacamp.com/learn/courses/intermediate-data-visualization-with-seaborn
Сквозное машинное обучение

Цели разведочного анализа данных

Понять данные

  • Есть ли закономерности?
  • Например: чаще ли сердечные заболевания встречаются у мужчин?

Выявить выбросы

  • Есть ли значения за пределами допустимого диапазона?
  • Присутствуют ли ошибочные или пропущенные значения?

Сформулировать гипотезы

  • Каких результатов мы ожидаем от данных?

Проверить допущения

  • Соответствуют ли ожидания действительности?
Сквозное машинное обучение

Давайте потренируемся!

Сквозное машинное обучение

Preparing Video For Download...