Zusammenfassungen der Kaggle-Module#

Die vorliegende Seite fasst die Themen der von uns bearbeiteten Kaggle-Module (intro to ml, missing values etc.) sehr knapp zusammen.

Verwendung für das eigene Lernen? Für jedes Kaggle-Modul:

  • Schritt 1: Gehen Sie zuerst das entsprechende Kaggle-Modul durch:

    • incl. Übungsteil

    • Lernen Sie den Inhalt, machen Sie sich Notizen.

  • Schritt 2: Ergänzen Sie die vorliegende Zusammenfassung:

    • Legen Sie ein neues, eigenes Notebook an.

    • Programmieren Sie die einzelnen Schritte.

    • Dokumentieren Sie Ihre Arbeit: Verlinken Sie jedes interessante Konzept in die Original-Dokumentation

    • Recherchieren Sie, welche alternative Codierung ebenfalls zum Ziel geführt hätte. (Oft gibt es unterschiedliche Lösungen für Pandas und für Numpy).

Je weniger Sie in Schritt 2 kopieren sondern selbstständig machen, desto größer wird ihr Lernerfolg sein.

Zusammenfassung: intro to ml#

Kaggle-Modul: KL > Intro to Machine Learning

Annahme: Notebook befindet sich im Ordner MY-DSCI-ML-FOLDER/dsci-ml/KaggleLearn/Intro_to_Machine_Learning. Die Datenquellen liegen im Schwester-Ordner, auf den wir in Python relativ mittels ../ zugreifen können, also z.B.:

melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'

Dataset einlesen: read_csv

anschauen: head, describe

missing values:

  • entdecken

  • radikal: Zeilen löschen

  • besser (siehe IntermediateMachineLearning): imputieren, z.B. mit dem Durchschnitt oder dem Median

fit und test lediglich auf dem Training-Set (böse!):

  • Daten in Target Series y und DataFrame X trennen

  • model.fit(X, y)

  • Prädiktion für die ersten 5 Häuser erstellen; vergleichen mit dem faktischen Wert

Besser: fit und test auf getrennten Teilen des Datensatzes:

  • train_X, val_X, train_y, val_y = train_test_split(X, y)

  • model.fit(train_X, train_y)

  • MAE, accuracy?

Hyperparamater tunen, hier: Anzahl der Blätter im DecisionTreeRegressor erhöhen. Vorsicht, irgendwann tritt overfitting auf.

Intermediate Machine Learning#

Kaggle-Modul: KL > Intermediate Machine Learning

Daten laden: read_csv; (auch Doku lesen und ausprobieren: gezippte Datei lesen, Excel lesen, eine bestimmte Tabelle aus einem Excel-Sheet auswählen), Quelle: ‘../input/home-data-for-ml-course/train.csv’ und ‘../input/home-data-for-ml-course/test.csv’.

Der SalePrice soll ermittelt werden: Das wird y.

Aufteilen auf X und y: df.drop(); auch probieren df.pop(item)?

Break off validation set from training data: train_test_split()

Welchen Datentyp hat X_train, y_train? Was ist der Unterschied zwischen pandas.core.frame.DataFrame und pandas.core.frame.Series?

Missing Values#

  • komplette Zeile löschen mit dropna: ist im Train-Datensatz ok für solche Zeilen, die das Target nicht enthalten - denn mit denen können wir gar nichts anfangen

  • komplette Spalte löschen?

    • cols_with_missing = [col for col in X_train.columns if X_train[col].isnull().any()]: Im Detail erklären können!

Der SimpleImputer wird genauso eingesetzt wie ein Modell-Generator:

kategoriale Variablen#

(NB: Vorsicht falscher Freund: EN “categorical” heißt auf de DE kategorial, nicht kategorisch)

  • Select numerical columns

  • Select categorical columns

    • with relatively low cardinality (convenient but arbitrary)

Apply one-hot encoder to each column with categorical data … in X, nicht in y

Pipelines#

Eher komplex für Einsteiger, eher für Fortgeschrittene. Gut zu wissen, was Pipelines machen, aber aktiv nutzen erst im zweiten Durchgang dieses Kurses.

Cross Validation#

Muss man kennen, Standard. Hier eher knappe Erklärung, aber Anwendung einer Pipeline:

Conclusion: Using cross-validation yields a much better measure of model quality, with the added benefit of cleaning up our code: note that we no longer need to keep track of separate training and validation sets. So, especially for small datasets, it’s a good improvement!

XGBoost#

Muss man wissen, dass es das gibt. Die entsprechende Python-Bibliothek hat ca 250MB (!).

Data Leakage#

Lernziel: Stratgeien erkennen, wie man Data Leakage vermeiden und ggf. erkennen kann.

Data Visualization#

keine Theorie; viele Beispiele für Visualisierungen mit Seaborn:

  • fifa.csv als Zeitreihe sns.lineplot

  • spotify.csv als sns.lineplot

  • flight_delays.csv als sns.barplot

  • sns.heatmap

  • Scatter Plots: sns.scatterplot, sns.regplot, sns.lmplot, sns.swarmplot

  • Iris-dataset: Histogramme und Dichte-Plots: sns.distplot, sns.kdeplot, sns.jointplot

Pandas#

wine_reviews = pd.read_csv("../input/wine-reviews/winemag-data-130k-v2.csv")
  • shape, head

2 Indexing, Selecting & Assigning#

display(reviews.iloc[:, 0])

  • ggf. nachlesen, erklären: Pandas loc, iloc

Deskriptive Statisitik#

  • describe, mean, unique

Mächtig: Vektorisierte Funktionen, hier am Bsp. apply:

def remean_points(row):
    row.points = row.points - review_points_mean
    return row

reviews.apply(remean_points, axis='columns')

4 Grouping and Sorting#

  • groupby, count, agg, sort_values, reset_index,

5 Data Types and Missing Values#

  • astype, dtype, fillna, replace

6 Renaming and Combining#

  • rename

  • concat, left.join

(zusammenfassung-feature-engineering)

Feature Engineering#