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 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: 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, 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?