Dataförberedelse

End-to-End Machine Learning

Joshua Stapleton

Machine Learning Engineer

Steg i dataförberedelse

Datamängden innehåller:

  • Saknade värden
  • Avvikande värden
  • Obalanser
  • Tomma kolumner
  • Dubbletter

Dataförberedelse:

  • Baseras på insikter från EDA
  • Avgörande för modellens prestanda
End-to-End Machine Learning

Null- och tomma värden

  • Ta bort rader/kolumner med saknade eller glesa värden
  • Nullvärden kan bryta modellen
  • Använd df.drop() för kolumner
  • Använd df.dropna(how='all') för rader
# 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

Hantera null- och tomma värden

  • Datarensning beror på EDA-resultaten

 

  • Om en kolumn har för många saknade värden:
    • Ta bort kolumnen

 

  • Om målkolumnen har saknade värden:
    • Ta bort rader med saknade målvärden
    • Eller behandla som separat kategori
End-to-End Machine Learning

Imputering

Vad gör man när bara några värden saknas?

  • Imputering:

    • Fyll saknade värden med ersättningsvärden
  • Strategier

    • Fyll med medelvärde eller median
    • Använd konstant eller föregående värde
# 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

Avancerad imputering

Avancerade tekniker:

  • K-närmaste grannar
  • 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

Ta bort dubbletter

 

  • Data ska vara ren, koncis och informationsrik
  • Redundans är inte till nytta
  • Dubbletter kan snedvrida eller förvirra modellen
  • Använd unika identifierare som kriterium för att ta bort poster/rader.

 

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

Nu kör vi en övning!

End-to-End Machine Learning

Preparing Video For Download...