Przygotowanie danych

End-to-End Machine Learning

Joshua Stapleton

Machine Learning Engineer

Etapy przygotowania danych

Zbiór danych zawiera:

  • Brakujące wartości
  • Wartości odstające
  • Nierównowagi
  • Puste kolumny
  • Duplikaty

Przygotowanie danych:

  • Na podstawie wniosków z EDA
  • Kluczowe dla późniejszej wydajności modelu
End-to-End Machine Learning

Wartości null / puste

  • Usuń brakujące lub rzadko wypełnione wiersze/kolumny
  • Wartości null mogą powodować błędy modelu
  • Użyj df.drop() dla kolumn
  • Użyj df.dropna(how='all') dla wierszy
# 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

Obsługa wartości null / pustych

  • Czyszczenie/usuwanie danych zależy od wyników EDA

 

  • Jeśli dana kolumna ma zbyt wiele brakujących wartości:
    • Usuń kolumnę

 

  • Jeśli kolumna docelowa ma brakujące wartości:
    • Usuń wiersze z brakującymi wartościami docelowymi
    • Lub potraktuj jako osobną kategorię
End-to-End Machine Learning

Imputacja

Co zrobić, gdy brakuje tylko kilku wartości?

  • Imputacja:

    • Uzupełnianie brakujących wartości zastępczymi
  • Strategie

    • Wypełnienie średnią lub medianą
    • Użycie stałej lub poprzedniej wartości
# 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

Zaawansowana imputacja

Zaawansowane techniki:

  • K-najbliższych sąsiadów
  • 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

Usuwanie duplikatów

 

  • Dane muszą być czyste, zwięzłe i bogate
  • Nadmiarowość jest niepożądana
  • Duplikaty mogą wprowadzać błędy lub dezorientować model
  • Jako kryterium usuwania rekordów/wierszy użyj unikalnych identyfikatorów.

 

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

Czas na ćwiczenia!

End-to-End Machine Learning

Preparing Video For Download...