Подготовка данных

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

Joshua Stapleton

Machine Learning Engineer

Этапы подготовки данных

Набор данных содержит:

  • Пропущенные значения
  • Выбросы
  • Дисбалансы
  • Пустые столбцы
  • Дубликаты

Подготовка данных:

  • Основана на результатах EDA
  • Критически важна для качества модели
Сквозное машинное обучение

Пустые / нулевые значения

  • Удаляйте строки/столбцы с пропусками или разреженные
  • Пустые значения могут нарушить работу модели
  • Для столбцов используйте df.drop()
  • Для строк используйте df.dropna(how='all')
# count missing values
print(df['oldpeak'].isnull().sum())

# Drop empty column(s) and row(s)
columns_dropped = heart_disease_df.drop(['oldpeak'], axis='columns')
rows_and_columns_dropped = columns_dropped.dropna(how='all')
Сквозное машинное обучение

Работа с пустыми / нулевыми значениями

  • Очистка данных зависит от результатов EDA

 

  • Если в столбце слишком много пропусков:
    • Удалите столбец

 

  • Если пропуски есть в целевом столбце:
    • Удалите строки с пропущенными целевыми значениями
    • Или выделите их в отдельную категорию
Сквозное машинное обучение

Импутация

Что делать, если пропусков мало?

  • Импутация:

    • Заполнение пропусков подставляемыми значениями
  • Стратегии:

    • Заполнить средним или медианой
    • Использовать константу или предыдущее значение
# Calculate the mean cholestrol value 
mean_value = heart_disease_df['chol'].mean()

# Fill missing cholestrol values with the mean
heart_disease_df['chol'].fillna(mean_value, inplace=True)
Сквозное машинное обучение

Продвинутая импутация

Продвинутые методы:

  • K ближайших соседей
  • SMOTE (метод синтетической сверхвыборки меньшинства)
from sklearn.impute import KNNImputer

# Initialize KNNImputer
imputer = KNNImputer(n_neighbors=2, weights="uniform")

# Perform the imputation on your DataFrame
df_imputed['oldpeak'] = imputer.fit_transform(df['oldpeak'])
Сквозное машинное обучение

Удаление дубликатов

 

  • Данные должны быть чистыми, лаконичными и информативными
  • Избыточность снижает качество модели
  • Дубликаты могут смещать результаты или вводить модель в заблуждение
  • Используйте уникальные идентификаторы как критерий удаления записей / строк.

 

# Drop duplicate rows
heart_disease_duplicates_dropped = heart_disease_column_dropped.drop_duplicates()
Сквозное машинное обучение

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

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

Preparing Video For Download...