Explorative Datenanalyse

End-to-End Machine Learning

Joshua Stapleton

Machine Learning Engineer

Der EDA‑Prozess

  • Datensatz untersuchen und analysieren
  • Datensatz verstehen
  • Datensatz visualisieren
  • Datensatz charakterisieren/klassifizieren

Ein Diagramm mit den EDA‑Bestandteilen am Herzkrankheitsdatensatz

End-to-End Machine Learning

Daten verstehen

df.head()

  • Zeigt die ersten Zeilen
  • Gibt einen Überblick über die Struktur
# Print the first 5 rows
print(heart_disease_df.head())

Die ersten 5 Zeilen unseres Herzkrankheits-DataFrames. Ergebnis von df.head().

df.info()

  • Fasst Features zusammen
  • Zeigt Non-Null-Einträge und Typen
# Print out details
print(heart_disease_df.info())

Zusammenfassung unseres Herzkrankheits-DataFrames. Ergebnis von df.info().

End-to-End Machine Learning

Klassen(un)gleichgewicht

df.value_counts()

  • Zählt Vorkommen je Klasse
  • Klasse: binäre Herzkrankheit (1/0)
  • Wichtig fürs Modeling
# print the class balance
print(heart_disease_df['target'].value_counts(normalize=True))

Die Klassenverteilung der Zielspalte unseres Herzkrankheits-DataFrames. Ergebnis von .value_counts() auf der Zielspalte.

End-to-End Machine Learning

Fehlende Werte

  • Kann zu Fehlern führen
  • Nicht repräsentative, verzerrte Ergebnisse

Nutze df.isnull()

  • Prüft auf Null-/leere/fehlende Werte
  • Anwendbar auf Spalten oder Spaltenmengen

Verwendung

# prüfen, ob alle Werte in einer Spalte null sind
print(heart_disease_df['oldpeak'].isnull().all())
True
End-to-End Machine Learning

Ausreißer

  • Ausreißerwerte

    • Messfehler
    • Tippfehler bei der Dateneingabe
    • Seltene Ereignisse
  • Können die Modellleistung verzerren

    • Modell lernt von Extremwerten
    • Erfasst den allgemeinen Trend nicht
  • Manchmal nützlich:

    • Seltene Werte
    • Erkennung: Boxplot oder IQR nutzen

Eine Visualisierung, die einen Ausreißer zeigt.

End-to-End Machine Learning

Daten visualisieren

Visualisierungen zeigen:

  • Allgemeine Trends
  • Fehlende Werte und Ausreißer

Weitere Visualisierungen:

  • Kerndichteschätzung
  • Empirische kumulative Verteilungen
  • Bivariate Verteilungen
df['age'].plot(kind='hist')
plt.xlabel('Age')
plt.ylabel('Frequency')
plt.show()

Eine Visualisierung der Altersverteilung im Datensatz.

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

Ziele der EDA

Daten verstehen

  • Gibt es Muster?
  • Z. B.: Haben Männer höhere Herzkrankheitsraten?

Ausreißer erkennen

  • Fallen Daten außerhalb akzeptabler Bereiche?
  • Gibt es falsche oder fehlende Werte?

Hypothesen formulieren

  • Was erwarten wir von den Daten?

Annahmen prüfen

  • Deckt sich Erwartung mit Realität?
End-to-End Machine Learning

Lass uns üben!

End-to-End Machine Learning

Preparing Video For Download...