# Kaggle Kondensat ## intro to ml ``` 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 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: irgendwann tritt overfitting auf! ## 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) Aufteilen auf `X` und `y`: df.drop(); auch probieren `df.pop(item)`? alternativ train_test_split() ### 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! `SimpleImputer`: Wird genauso eingesetzt wie ein Modell-Generator: * Erklären können! * arbeitet nicht auf Pandas-Ebene, sondern auf Numpy-Ebene ### kategoriale Variablen (NB: Es heißt DE: [kategorial](https://de.wikipedia.org/wiki/Kategoriale_Variable), nicht kategorisch), in EN: categorical) * Select numerical columns * Select categorical columns * with relatively low cardinality (convenient but arbitrary) Apply one-hot encoder to each column with categorical data * Unterschied label_encoder und OneHotEncoder? * wo anwenden: target? auch unabhängige Variable? * Diskussion: Eine kategoriale Spalte habe *n* Ausprägungen: Warum sollten der OneHotEncoder nur *n-1* Spalten anlegen?