From 5e4151d2618212b497f1aaf0d5bb84f6985434b8 Mon Sep 17 00:00:00 2001 From: aaron Date: Thu, 28 May 2026 15:47:05 +0200 Subject: [PATCH] feature: add algorithm notes and linter stuff --- SL/aufgaben/workshop3/src/prepare.py | 5 ++- SL/notizen/L3_Notizen.md | 48 ++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/SL/aufgaben/workshop3/src/prepare.py b/SL/aufgaben/workshop3/src/prepare.py index a03f1c6..c4c45b0 100644 --- a/SL/aufgaben/workshop3/src/prepare.py +++ b/SL/aufgaben/workshop3/src/prepare.py @@ -138,6 +138,7 @@ def e42_clean_names(df: pd.DataFrame) -> pd.DataFrame: df.info() return df + if __name__ == "__main__": data = load() # Data Frame @@ -158,4 +159,6 @@ if __name__ == "__main__": data = e42_clean_names(data) # E4.3 Standardisieren: kein Bedarf (modellabhängig, gehört ans Training) data.to_csv(OUT, index=False) - print(f"Fertig: {OUT} geschrieben ({data.shape[0]} Zeilen, {data.shape[1]} Spalten)") + print( + f"Fertig: {OUT} geschrieben ({data.shape[0]} Zeilen, {data.shape[1]} Spalten)" + ) diff --git a/SL/notizen/L3_Notizen.md b/SL/notizen/L3_Notizen.md index 82b9f57..b711e17 100644 --- a/SL/notizen/L3_Notizen.md +++ b/SL/notizen/L3_Notizen.md @@ -365,3 +365,51 @@ - Modelanwendung - Das Modell bekommt neue unbekannte Daten - Macht eine Vorhersage basierend auf den Trainingsdaten + +## Algorithmen Übersicht + +- lineare Modelle +- Baumverfahren +- Ensemble-Verfahren +- Suport Vector Machines +- Naive Bayes +- k-Nearest Neighbors +- Neuronale Netze + +## kNN: k Nearest Neighbors + +- Ist sehr intuitiv +- Berechnet man anhand von Distanzen + - Kosinus Distanz + - Manhattan Distanz + - Euklidische Distanz +- k Nachbarn auswählen (k ist eine natürliche Zahl) die berücksichtig werden + - einer der wichtigsten Schritte bei diesem Modell + - schlecht gewähltes k führt zu Over- oder Underfitting + - ist abhänig von der Datenmenge +- entscheidung treffen + - Klassifikation: Mehrheit gewinnt + - Regression: Durchschnitt der Nachbaren +- Grundprinzip + - kelines k -> Overfitting -> Modell reagiert auf zu viele Punkte + - grosses k -> Underfitting -> Modell wird zu grob +- Vorteile + - Einfachheit +- Nachteile + - langsames Training + - viel Rechenaufwand +- kNN wid vor allem dort eingesetzt wo die Ähnlichkeit zwischen Datenpunkten eine grosse Rolle spielt! +- kNN ist kein Clusterin Algorithmus aber es kann ähnliche Ergebnisse liefern +- kNN funktioniert am besten, wenn Daten übersichtlich, niederdimensional und gut skaliert sind + +## kNN mit scikit-learn + +- kNN ist ein Klassifikator, das generelle Vorgehen ist wie folgt +1. laden der Daten +2. auftrennen in feature Matrix (X) und Traget Vektor (y): Features - Target - Split +3. auftrennen von X und y in trainingsset (X_train, y_train) und Testset (X_Test und y_test) +4. importieren der Trainingsfunktion +5. definieren des zu lernenden Modells mit gewünschter Parametrisierung +6. trainieren des Modells +7. anwenden des Modells +8. evaluieren der performance