Zum Inhalt springen →

jentsch.io Beiträge

30 Tage scikit-learn – Tag 8: Entscheidungsbäume

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

30 Tage scikit-learn – Tag 7: Feature Engineering

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

ChatGPT Prompt Engineering for Developers

Prompt 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

30 Tage scikit-learn – Tag 6: Train/Test Split und Cross Validation

TODO für Tag 6 Unterschied zwischen Train/Test Split und Cross-Validation und cross_val_score verwenden Beim Train/Test Split wird der vorhandene Datensatz einmalig in zwei getrennte Teile aufgeteilt – einen Teil zum Trainieren des Modells und einen anderen zum Testen, ob das Modell etwas gelernt hat. Den scikit-learn Code zum splitten der Daten habe ich in den letzten 5 Tagen ja schon diverse male verwendet und beschrieben. Das Modell sieht die Testdaten beim Training nicht und wird danach auf diesen unbekannten Daten bewertet. Der Nachteil dabei ist, dass die Leistung des Modells stark davon abhängen kann, wie genau diese eine Aufteilung zufällig gewählt wurde – manchmal hat man Glück, manchmal Pech, und das Ergebnis kann täuschen. Cross-Validation löst dieses Problem, indem der…

Kommentare sind geschlossen

30 Tage scikit-learn – Tag 5: Regression einfach erklärt

TODO für Tag 5 Lineare Regression verstehen und implementieren Das Ziel der linearen Regression ist es eine Gerade (oder Hyperplane in mehreren Dimensionen) zu finden, die den Zusammenhang zwischen denFeatures und einem Label am besten wiedergibt.scikit-learn stellt mit LinearRegression eine Klasse zur Verfügung, das diese Gewichte über Least Squares (kleinste Fehlerquadrate) optimiert. Hier ist ein kleines Beispiel mit künstlichen Daten: Der Python-Code zeigt ein Beispiel für eine lineare Regression, bei der mit scikit-learn ein Modell auf kleinen Trainingsdaten trainiert wird. Zunächst werden die Featues (X) und die Label (y) als Arrays definiert, danach wird ein LinearRegression-Modell erstellt und mit den Trainingsdaten trainiert. Anschließend werden die erlernte Steigung und der Achsenabschnitt ausgegeben. Das Modell nutzt die gelernten Parameter, um Vorhersagen für…

Kommentare sind geschlossen

30 Tage scikit-learn – Tag 4: Klassifikationsmodelle kennenlernen – k-NN

TODO für Tag 4 k-Nearest Neighbors k-Nearest Neighbors ist ein einfaches, Klassifikationsverfahren mit dem man einen neuen Datenpunkt basierend auf seinen nächsten Nachbarn klassifiziert. Dabei wird die Klassenzugehörigkeit durch Mehrheitsentscheidung der Nachbarn bestimmt. Für jede Vorhersage wird die Distanz zu allen Trainingspunkten berechnet, um die k nächsten Nachbarn zu finden. Das ist jedoch bei großen Datensätzen sehr rechenintensiv (O(n) pro Vorhersage). K-NN sind auch als „lazy learner“ bekannt, da es keine Funktion aus den Trainingsdaten lernt, sondern sich stattdessen den Trainingsdatensatz „merkt“. Deshalb gibt es bei K-NN auch keine Trainingszeit. Es gibt auch eine k-Nearest Neighbors Regression. Bei der Regression wird der Durchschnitt der Nachbarn genommen. In scikit-learn gibt es die beiden Nearest Neighbors-Regressoren KNeighborsRegressor und RadiusNeighborsRegressor. ​​Der Hauptunterschied zwischen…

Kommentare sind geschlossen

30 Tage scikit-learn – Tag 3: Daten verstehen und vorbereiten

TODO für Tag 3 Iris-Datensatz genauer anschauen ​Der Iris-Datensatz ist ein klassischer, multivariater Datensatz in der Statistik und im maschinellen Lernen. Er wurde 1936 vom britischen Statistiker Ronald A. Fisher veröffentlicht, basierend auf Messungen des amerikanischen Botanikers Edgar Anderson. Der Datensatz dient als Beispiel für die lineare Diskriminanzanalyse und wird häufig zum Testen und Vergleichen von Klassifikationsalgorithmen verwendet. Der Datensatz enthält 150 Einträge und dabei jeweils 50 Datensätze je Art (Iris setosa, Iris versicolor, Iris virginica). Jeder Datensatz hat die folgenden 4 Features mit Angabe in Zentimetern: Der Iris Datensatz ist in scikit-learn enthalten und kann mit mit dem Aufruf von „iris = datasets.load_iris()“ geladen werden – wie auch schon gestern und vorgestern gesehen. Das Folgende Python Skript lädt die…

Kommentare sind geschlossen

30 Tage scikit-learn – Tag 2: Erstes Modell erstellen – Klassifikation mit Iris-Datensatz

TODO für Tag 2 Dataset laden (Iris-Datensatz) Erst mal die Daten laden. Das habe ich ja gestern schon mal gemacht. Daten in Trainings- und Testdaten aufteilen Beim maschinellen Lernen ist es wichtig, die verfügbaren Daten in Trainings- und Testdaten aufzuteilen. Die Trainingsdaten werden genutzt, um das Modell zu trainieren – also um Muster zu erkennen und Parameter zu lernen. Die Testdaten dienen anschließend zur Bewertung des Modells, um zu prüfen, wie gut es auf neue, unbekannte Daten generalisiert. Ein typisches Aufteilungsverhältnis ist 80 % Training und 20 % Test, kann aber je nach Anwendungsfall variieren. Einfaches Klassifikationsmodell trainieren Dieser Python-Code zeigt, wie man ein logistisches Regressionsmodell mit scikit-learn erstellt und trainiert. Es wird das LogisticRegression-Modell aus scikit-learn importiert – ein klassisches Modell…

Kommentare sind geschlossen

30 Tage scikit-learn – Tag 1: Einführung und Installation von scikit-learn

To-Do für heute Was ist scikit-learn? Voraussetzungen Installation JupyterLab JupyterLab vereinfacht die Arbeit mit scikit-learn, weil es eine interaktive Umgebung bietet, in der man Code, Visualisierungen und Dokumentation nahtlos kombinieren kann. Man kann Datensätze schrittweise untersuchen, Modelle direkt trainieren und evaluieren, und die Ergebnisse sofort visualisieren – alles in einer übersichtlichen Oberfläche. JupyterLab starten Nache dem Start wird JupyterLab im Broser geöffnet. Alternativ kann man auch mit PyCharm oder einem anderen Editor arbeiten, aber ich bevorzuge Jupyter-Lab wegen dem Komfort. Installation überprüfen Zum überprüfen der Installation kann man ein neues Jupyter-Notebook öffnen und folgenden Python Code ausführen. Wie man sieht habe ich die Version 1.7.dev0 installiert. Die wichtigsten scikit-learn Module scikit-learn bietet viele Module, hier eine Auswahl der wichtigsten. Modul…

Kommentare sind geschlossen

30 Tage scikit-learn

Tag 1: Einführung und Installation Tag 2: Erstes Modell erstellen Tag 3: Daten verstehen und vorbereiten Tag 4: Klassifikationsmodelle kennenlernen – k-NN Tag 5: Regression einfach erklärt Tag 6: Train/Test Split und Cross Validation Tag 7: Feature Engineering Tag 8: Entscheidungsbäume Tag 9: Random Forest Tag 10: Gradient Boosting Tag 11: Hyperparameter Tuning mit GridSearchCV Tag 12: Support Vector Machines (SVM) Tag 13: Pipeline erstellen Tag 14: Feature Scaling vertiefen Unterschied zwischen StandardScaler, MinMaxScalerWann ist Skalierung unbedingt notwendig? Tag 15: Umgang mit fehlenden Werten Tag 16: Clustering-Grundlagen – KMeans Tag 17: Bewertungskriterien für Klassifikation Tag 18: Mehr Klassifikatoren vergleichen Tag 19: Pipeline + Cross-Validation kombinieren Tag 20: Dimensionalitätsreduktion mit PCA Tag 21: Textdaten mit scikit-learn Tag 22: Modell speichern und…

Kommentare sind geschlossen