TODO Für Tag 15 SimpleImputer verstehen Der SimpleImputer in scikit-learn ist ein Werkzeug zur Vorverarbeitung von Daten, das speziell dafür entwickelt wurde, fehlende Werte in numerischen oder kategorischen Datensätzen systematisch zu ersetzen. Er analysiert die vorhandenen Daten und füllt Lücken, die beispielsweise durch NaN-Werte entstanden sind, mithilfe einer vorher definierten Strategie. Dabei kann der Benutzer festlegen, ob fehlende Werte durch den arithmetischen Mittelwert, den Median, den häufigsten Wert oder einen konstanten Wert ersetzt werden sollen. Diese Strategien ermöglichen eine unkomplizierte und schnelle Bereinigung von unvollständigen Datensätzen, was besonders wichtig ist, da viele Machine-Learning-Algorithmen nicht in der Lage sind, mit fehlenden Werten umzugehen. Der Imputer wird zunächst mit den Trainingsdaten „gelernt“, wobei er die notwendigen Kennzahlen wie Mittelwert oder Modus berechnet,…
Kommentare sind geschlossenjentsch.io Beiträge
TODO Für Tag 14 Unterschied zwischen StandardScaler, MinMaxScaler In scikit-learn gibt es sowohl den StandardScaler als auch den MinMaxScaler zur Skalierung von numerischen Features. Beide sind Werkzeuge zur Vorverarbeitung von Daten für Machine-Learning-Modelle, da viele Algorithmen empfindlich auf die Skalierung der Features reagieren. Der StandardScaler skaliert die Daten so, dass sie einen Mittelwert von 0 und eine Standardabweichung von 1 aufweisen. Im Gegensatz dazu skaliert der MinMaxScaler die Features auf einen vorgegebenen Bereich, indem er die Min- und Max-Werte des Features verwendet. Dies stellt sicher, dass alle Werte innerhalb dieses Bereichs liegen. Die Wahl zwischen beiden hängt oft vom spezifischen Algorithmus und der Natur der Daten ab. Beispiel: StandardScaler in Aktion Ausgabe: In den Originaldaten gibt es 2 Features: Der Mittelwert wird spaltenweise berechnet:…
Kommentare sind geschlossenTODO Für Tag 13 Erklärung und Vorteile von Pipeline In scikit-learn sind Pipelines ein Konzept zur strukturierten und reproduzierbaren Modellierung von ML-Workflows. Sie dienen dazu, eine Abfolge von Verarbeitungsschritten (Vorverarbeitung, Feature-Transformation, Modelltraining, etc.) logisch miteinander zu verknüpfen. Eine Pipeline kapselt alle Schritte eines Prozesses, die typischerweise in einer festen Reihenfolge auf Trainings- und Testdaten angewendet werden, und stellt sicher, dass diese konsistent und korrekt ausgeführt werden. Dabei übernimmt sie nicht nur das Verketten der Verarbeitungsschritte, sondern sorgt auch dafür, dass die Parameter jedes Schrittes im Rahmen von Modelloptimierung oder Cross-Validation kontrolliert und verändert werden können. Die Vorteile von Pipelines liegen unter anderem in der Vermeidung häufiger Fehlerquellen, z.B. dass Testdaten unbeabsichtigt in die Trainingsphase einfließen. Da eine Pipeline immer den…
Kommentare sind geschlossenTODO Für Tag 12 SVC (Support Vector Classification) SVC ist eine Implementierung von Support Vector Machines (SVM) für Klassifikationsaufgaben. Die zugrunde liegenden Konzepte basieren auf der Idee, eine optimale Trennlinie zwischen Klassen zu finden. Dabei maximiert die SVM den Abstand zwischen dieser Trennlinie und den nächstgelegenen Punkten beider Klassen (Support Vektors). Kernel verstehen Ein Kernel ist eine Funktion die das Skalarprodukt zweier Punkte in einem höherdimensionalen Raum darstellt, ohne die Punkte explizit zu transformieren. In scikit-learn sind folgende Kernel vorhanden. Linear Kernel Der Linear-Kernel trennt die Daten mit einer einfachen geraden Linie (oder einer Ebene im mehrdimensionalen Raum). Er sagt im Grunde: „Ich suche nach einer Linie/Ebene, die die zwei Gruppen möglichst klar voneinander trennt.“ Der Linear Kernel kann verwendet…
Kommentare sind geschlossenTODO für Tag 11 GridSearchCV einsetzen GridSearchCV habe ich ja schon am Tag 9 und Tag 10 verwendet, hier aber noch mal GridSearchCV im Detail. Bei GridSearchCV handelt es sich um ein einfaches Werkzeug, das hilft, die besten Hyperparameter für ein Modell systematisch zu finden. Statt sich auf Intuition oder Trial-and-Error zu verlassen, wird eine Gitter-Suche über alle Kombinationen der angegebenen Parameter durchgeführt. Dabei wird jedes Modell mit Cross-Validation evaluiert, um Überanpassung zu vermeiden und die Verlässlichkeit der Parameterwahl zu erhöhen. Beispiel: GridSearchCV testet alle Kombinationen im param_grid, was bei großen Netzen oder vielen Parametern schnell teuer wird. Alternativ kann man RandomizedSearchCV einsetzen, wenn man die Parameter zufällig testen möchte, aber trotzdem eine gute Lösung erwartet. Ausgabe: Das Bild visualisiert…
Kommentare sind geschlossenTODO für Tag 10 Einführung in GradientBoostingClassifier Der GradientBoostingClassifier in scikit-learn ist ein Klassifikator (Es gibt für die Regression auch einen GradientBoostingRegressor), der auf dem Prinzip des Gradientenboostings basiert. Dabei handelt es sich um eine Methode des Ensemble-Lernens, bei der eine Sequenz von Modellen schrittweise trainiert werden. Jedes neue Modell versucht, die Fehler der vorherigen Modelle zu korrigieren, indem es auf die Residuen (Die Residuen geben an, wie stark das Modell an einer bestimmten Stelle „danebenliegt“) der bisherigen Vorhersagen angepasst wird. Im Laufe der Iterationen entsteht ein zusammengesetztes Modell, das komplexe Zusammenhänge in den Daten erfassen kann. Beispiel: In dem Beispiel wird zuerst wird ein künstlicher Datensatz mit make_classification generiert und dieser anschließend mithilfe von train_test_split in Trainings- und Testdaten aufgeteilt. Danach wird der…
Kommentare sind geschlossenTODO für Tag 9 RandomForestClassifier anwenden Der RandomForestClassifier ist ein leistungsfähiger und vielseitiger Classifier. Statt nur einen einzigen Entscheidungsbaum zu trainieren, baut der Random Forest viele Bäume auf zufälligen Daten-Subsets und Merkmals-Subsets auf. Das Ergebnis jedes Baums wird als Voting betrachtet, und die Klasse mit den meisten Votes wird als Gesamtergebnis ausgegeben. Beispielcode Der Python-Code lädt einmal mehr den Iris-Datensatz :-), teilt ihn in Trainings- und Testdaten auf und trainiert damit ein Random Forest Klassifizierungsmodell auf den Trainingsdaten. Mit der predict Funktion macht er eine Vorhersage auf den Testdaten und bewertet schließlich die Leistung des Modells, indem die Genauigkeit der Vorhersagen im Vergleich zu den tatsächlichen Labels berechnet und ausgegeben wird. Accuracy: 1.00 Um die Feature Importance eines Random Forest…
Kommentare sind geschlossenTODO für Tag 8 Der DecisionTreeClassifier Der DecisionTreeClassifier aus scikit-learn ist ein einfacher, schneller und interpretierbarer Klassifikator, der auf Entscheidungsbäumen basiert. Er lernt Entscheidungsregeln, indem er die Trainingsdaten rekursiv nach den „besten“ Attributen aufspaltet, um die Klassen möglichst sauber zu trennen. Hier ein einfaches Beispiel, bei dem der Iris-Datensatz mit dem DecisionTreeClassifier klassifiziert wird: Mit dem Code erhält man eine Genauigkeit von 100% und das beste darin ist, dass man mit plot_tree auch noch den Entscheidungsbaum visualisieren kann. Visualisierung des Baumes mit plot_tree Der Baum zeigt genau auf, wie das Modell zu einer Klassifikation eines Datensatzes kommt. Linker Teil (True, also petal length <= 2.45): Rechter Teil (False, also petal length > 2.45): Linker Zweig (petal length <= 4.75): Rechter…
Kommentare sind geschlossenTODO für Tag 7 Neue Polynomiale Features mit PolynomialFeatures erzeugen Mit PolynomialFeatures von sklearn.preprocessing kann man aus bestehenden Features neue Features erzeugen, indem man die bestehenden Features potenziert oder multipliziert. So können komplexere Zusammenhänge zwischen den Features und dem Zielwert abgebildet werden, die mit rein linearen Modellen nicht abgebildet werden können. Hier ein Beispiel: Der Dataframe df enthalt nun folgende Werte x1 x2 x1^2 x1 x2 x2^2 0 2.0 3.0 4.0 6.0 9.0 1 3.0 5.0 9.0 15.0 25.0 2 5.0 7.0 25.0 35.0 49.0 Durch die Anwendung von PolynomialFeatures bleiben die ursprünglichen Features (x1, x2) erhalten und es werden zusätzliche Features ergänzt. So schafft man neue Feature-Wechselwirkungen, die das Modell evtl. besser nutzen kann. Hier eine Grafische Darstellung zum…
Kommentare sind geschlossenPrompt Engineering ist eine wichtige Qualifikation um bessere Ergebnisse aus einem LLM zu erhalten. Der kostenlose Kurs „ChatGPT Prompt Engineering for Developers“ von DeepLearning.AI, zeigt in ein paar einfachen Lektionen, wie man Prompts schreibt und worauf man achten sollte. Ich habe den Kurs mal durchgearbeitet und dabei als LLM devstral verwendet. Nicht optimal, aber ein sehr gutes Modell zum Programmieren und die hier gestellten Aufgaben hat das Modell auch ohne Probleme gemeistert. Der Kurs wird von Isa Fulford und Andrew Ng geleitet und ist kostenlos. Er besteht aus den folgenden Videos zu denen dann immer ein Jupyter Notebook existiert, dass man direkt online ausführen kann. Hinweis: Wer denkt, dass „ChatGPT Prompt Engineering for Developers“ speziell auf die Bedürfnisse von Entwickler…
Kommentare sind geschlossen