Zusammenfassungen der Kaggle-Module
Contents
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 DataFrameX
trennenmodel.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:
Doku anschauen: https://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html
erklären können: Welcher Wert wird eingesetzt?
Achtung: der SimpleImputer arbeitet nicht im Pandas-Kontext, sondern im Numpy-Kontext. Sich klar machen: Unterschied Pandas- und Numpy-Kontext
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
Unterschied label_encoder (https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html) und OneHotEncoder (https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html)?
Unterschied OneHotEncoder und OrdinalEncoder
für
y
: “Note: a one-hot encoding of y labels should use a LabelBinarizer instead.”Diskussion: Eine kategoriale Spalte habe n Ausprägungen: Warum sollten der OneHotEncoder nur n-1 Spalten anlegen?
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)