Zum Inhalt springen →

jentsch.io Beiträge

30 Tage scikit-learn – Tag 18: Mehr Klassifikatoren vergleichen

TODO für Tag 18 Erst mal eine kurze Vorstellung der 3 Algorithmen, auch wenn sie schon in den vorherigen Tagen der 30 Tage scikit-learn Challenge verwendet wurden. Logistic Regression Die Logistische Regression ist ein Algorithmus der hauptsächlich für Klassifikationsaufgaben verwendet wird, insbesondere für binäre Klassifikationsprobleme (d.h. Probleme mit zwei möglichen Ergebnissen, z.B. Ja/Nein, 0/1, Spam/Kein Spam). Trotz des Namens „Regression“ im Titel ist das primäre Ziel die Klassifikation. Ähnlich wie die lineare Regression berechnet sie eine gewichtete Summe der Eingabemerkmale (plus einem Bias-Term). Das Ergebnis dieser linearen Kombination wird dann durch die Sigmoid-Funktion geleitet. Diese Funktion „quetscht“ jeden beliebigen reellen Eingabewert in einen Ausgabewert zwischen 0 und 1. Der Ausgabewert der Sigmoid-Funktion wird als Wahrscheinlichkeit interpretiert, dass die gegebene Eingabe zur positiven Klasse gehört…

Kommentare sind geschlossen

30 Tage scikit-learn – Tag 17: Bewertungskriterien für Klassifikation

TODO für Tag 17 Confusion Matrix Beim Training eines Klassifikationsmodells, das zum Beispiel E-Mails als Spam oder Nicht-Spam einordnet, möchte man visualisieren, wie gut es funktioniert. Eine einfache Prozentzahl der korrekt zugeordneten E-Mails (die Gesamtgenauigkeit) reicht dabei oft nicht aus, denn es gibt verschiedene Arten von Fehlern und richtigen Vorhersagen. Dabei kann die Confusion Matrix helfen. Die Confusion Matrix ist in den letzten Tagen schon öfter zum Einsatz gekommen. Sie zeigt, wie oft ein Modell eine positive Klasse (z. B. Spam) korrekt als positiv identifiziert hat (True Positives), wie oft es eine negative Klasse (z. B. Nicht-Spam) korrekt als negativ erkannt hat (True Negatives). Aber sie zeigt auch, wie oft das Modell etwas als positiv vorhergesagt hat, obwohl es tatsächlich negativ…

Kommentare sind geschlossen

30 Tage scikit-learn – Tag 16: Clustering-Grundlagen – KMeans

TODO für Tag 16 KMeans Der KMeans-Algorithmus für eine Aufteilung in 3 Gruppen funktioniert in etwa so: Zuerst wählt er 3 zufällige Stellen aus, die als erste Schätzungen für die Mittelpunkte einer Gruppen dienen. Dann schaut er sich jeden einzelnen Punkt an und packt ihn in die Gruppe, deren Mittelpunkt ihm am nächsten ist. Wenn alle Punkte einer Gruppe zugeordnet sind, berechnet der Algorithmus für jede Gruppe neu, wo genau die Mitte aller Punkte in dieser Gruppe liegt. Diese neuen Mitten sind dann die verbesserten Schätzungen für die Gruppenmittelpunkte. Diesen Vorgang wiederholt der Algorithmus immer wieder. Das macht er so lange, bis sich die Mittelpunkte der Gruppen kaum noch bewegen. Am Ende hat man dann die Punkte so in 3…

Kommentare sind geschlossen

30 Tage scikit-learn – Tag 15: Umgang mit fehlenden Werten

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 geschlossen

30 Tage scikit-learn – Tag 14: Feature Scaling vertiefen

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 geschlossen

30 Tage scikit-learn – Tag 13: Pipeline erstellen

TODO 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 geschlossen

30 Tage scikit-learn – Tag 12: Support Vector Machines (SVM)

TODO 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 geschlossen

30 Tage scikit-learn – Tag 11: Hyperparameter Tuning mit GridSearchCV

TODO 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 geschlossen

30 Tage scikit-learn – Tag 10: Gradient Boosting

TODO 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 geschlossen

30 Tage scikit-learn – Tag 9: Random Forest

TODO 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 geschlossen