LoslegenKostenlos starten

Spalten mit wenigen Beobachtungen entfernen

Nach viel Feature Engineering ist es eine gute Idee, kurz zurückzutreten und zu prüfen, was du erstellt hast. Wenn du Automatisierungstechniken für kategoriale Features wie Explode oder One-Hot-Encoding verwendet hast, hast du möglicherweise Hunderte neuer binärer Features. Das Thema Feature-Auswahl würde einen eigenen Kurs füllen, aber es gibt ein paar schnelle Schritte, mit denen du die Dimensionalität deines Datensatzes reduzieren kannst.

In dieser Übung entfernen wir Spalten, die weniger als 30 Beobachtungen haben. 30 ist eine gängige Mindestanzahl von Beobachtungen für statistische Signifikanz. Mit weniger als 30 führen die Beziehungen schnell zu Overfitting — oft nur aus purem Zufall!

HINWEIS: Die Daten stehen im DataFrame df zur Verfügung.

Diese Übung ist Teil des Kurses

<Kurs>Feature Engineering mit PySpark</Kurs>
Kurs ansehen

Übungsanweisungen

  • Verwende die bereitgestellte for-Schleife, die über die Liste der binären Spalten iteriert, und berechne die sum der Werte in der Spalte mit der Funktion agg. Nutze collect(), um die Berechnung sofort auszuführen, und speichere das Ergebnis in obs_count.
  • Vergleiche obs_count mit obs_threshold; die if-Bedingung soll wahr sein, wenn obs_count kleiner oder gleich obs_threshold ist.
  • Entferne Spalten, die zur Liste cols_to_remove hinzugefügt wurden, mit drop(). Denk daran, dass * das Entpacken der Liste ermöglicht.
  • Gib die Anfangs- und Endform der PySpark-DataFrames aus, indem du count() für die Anzahl der Datensätze und len() auf df.columns bzw. new_df.columns für die Anzahl der Spalten verwendest.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

obs_threshold = 30
cols_to_remove = list()
# Inspect first 10 binary columns in list
for col in binary_cols[0:10]:
  # Count the number of 1 values in the binary column
  obs_count = df.____({col: ____}).____()[0][0]
  # If less than our observation threshold, remove
  if ____ ____ ____:
    cols_to_remove.append(col)
    
# Drop columns and print starting and ending dataframe shapes
new_df = df.____(*____)

print('Rows: ' + str(df.____()) + ' Columns: ' + str(____(df.____)))
print('Rows: ' + str(new_df.____()) + ' Columns: ' + str(____(new_df.____)))
Code bearbeiten und ausführen