Підготовка даних

End-to-End Machine Learning

Joshua Stapleton

Machine Learning Engineer

Кроки підготовки даних

У наборі даних є:

  • Пропуски
  • Викиди
  • Дисбаланси
  • Порожні стовпці
  • Дублікатні записи

Підготовка даних:

  • Ґрунтується на висновках EDA
  • Критично впливає на подальшу роботу моделі
End-to-End Machine Learning

Null / порожні значення

  • Видаліть рядки/стовпці з пропусками або дуже розріджені
  • Значення null можуть зламати модель
  • Для стовпців використовуйте 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')
End-to-End Machine Learning

Обробка null / порожніх значень

  • Очищення/видалення значень залежить від висновків EDA

 

  • Якщо у стовпці забагато пропусків:
    • Видаліть стовпець

 

  • Якщо цільовий стовпець має пропуски:
    • Видаліть рядки з відсутніми цілями
    • Або розгляньте як окрему категорію
End-to-End Machine Learning

Імпутація

Що робити, коли пропусків мало?

  • Імпутація:

    • Заповніть пропуски відповідниками
  • Стратегії

    • Заповнити середнім або медіаною
    • Використати константу або попереднє значення
# 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)
End-to-End Machine Learning

Просунута імпутація

Просунуті техніки:

  • K-nearest neighbors
  • SMOTE (synthetic minority oversampling technique)
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'])
End-to-End Machine Learning

Видалення дублікатів

 

  • Дані мають бути чисті, лаконічні та інформативні
  • Надмірності не допомагають
  • Дублікати спотворюють або плутають модель
  • Використовуйте унікальні ідентифікатори як критерій для видалення записів/рядків

 

# Drop duplicate rows
heart_disease_duplicates_dropped = heart_disease_column_dropped.drop_duplicates()
End-to-End Machine Learning

Давайте потренуємось!

End-to-End Machine Learning

Preparing Video For Download...