Exploratory Data Analysis

End-to-End Machine Learning

Joshua Stapleton

Machine Learning Engineer

Het EDA-proces

  • Onderzoek en analyseer de dataset
  • Begrijp de dataset
  • Visualiseer de dataset
  • Karakteriseer / classificeer de dataset

Een diagram met onderdelen van EDA toegepast op de hartziekte-dataset van patiënten

End-to-End Machine Learning

Onze data begrijpen

df.head()

  • Toont de eerste rijen
  • Geeft snel beeld van de structuur
# Print de eerste 5 rijen
print(heart_disease_df.head())

De eerste 5 rijen van onze heart disease-DataFrame. Resultaat van df.head().

df.info()

  • Vat kenmerken samen
  • Toont non-null entries en types
# Print details
print(heart_disease_df.info())

Samenvatting van onze heart disease-DataFrame. Resultaat van df.info().

End-to-End Machine Learning

Klasse-(on)balans

df.value_counts()

  • Telt unieke voorkomens per klasse
  • Klasse: binaire aanwezigheid van hartziekte (1/0)
  • Belangrijk voor modelleren
# print de class balance
print(heart_disease_df['target'].value_counts(normalize=True))

De klassenbalans van de target-kolom van onze heart disease-DataFrame. Resultaat van .value_counts() op target.

End-to-End Machine Learning

Missende waarden

  • Kan fouten veroorzaken
  • Niet-representatieve, bevooroordeelde resultaten

Gebruik df.isnull()

  • Checkt op null/lege/missende waarden
  • Toepassen op kolom of kolomset

Gebruik

# check of alle waarden in een kolom null zijn
print(heart_disease_df['oldpeak'].isnull().all())
True
End-to-End Machine Learning

Uitschieters

  • Afwijkende waarden

    • Meetfouten
    • Invoervouten
    • Zeldzame gebeurtenissen
  • Kunnen modelprestatie scheeftrekken

    • Model leert op extreme waarden
    • Vangt algemene trend niet
  • Soms nuttig:

    • Zeldzame waarden
    • Detectie: boxplot of IQR

Een visualisatie met een uitschieter.

End-to-End Machine Learning

Onze data visualiseren

Visualisaties tonen:

  • Algemene trends
  • Missende waarden en uitschieters

Andere visualisaties:

  • Kernel-dichtheidsschatting
  • Empirische cumulatieve verdelingen
  • Bivariate verdelingen
df['age'].plot(kind='hist')
plt.xlabel('Age')
plt.ylabel('Frequency')
plt.show()

Een visualisatie van de leeftijdsverdeling in onze dataset.

1 https://seaborn.pydata.org/tutorial/distributions.html, https://app.datacamp.com/learn/courses/intermediate-data-visualization-with-seaborn
End-to-End Machine Learning

Doelen van EDA

Begrijp de data

  • Zijn er patronen?
  • Bijvoorbeeld: hebben mannen vaker hartziekte?

Vind uitschieters

  • Valt iets buiten wat acceptabel is?
  • Zijn er onjuiste of missende waarden?

Formuleer hypotheses

  • Wat verwachten we van de data?

Check aannames

  • Komt verwachting overeen met realiteit?
End-to-End Machine Learning

Laten we oefenen!

End-to-End Machine Learning

Preparing Video For Download...