- Trainiere ein maschinelles Lernmodell mit Python-Bibliotheken in einem Jupyter Notebook
- Integriere ein trainiertes maschinelles Lernmodell in eine Streamlit-Web-App
Das sind die Aktivitäten für diese Lektion:
ARBEITEN MIT MASCHINELLEN LERNMODELLEN
Eine weitere wichtige Funktion von Jupyter Notebooks, Python und Streamlit ist die Möglichkeit, Machine-Learning-Modelle zu trainieren und Vorhersagen zu treffen.
Wenn du dich zum ersten Mal mit künstlicher Intelligenz beschäftigst, solltest du dir die KI-Lektionen in diesem Lehrplan ansehen, um die Grundlagen zu lernen, bevor du dich an die fortgeschrittenen Programmieraufgaben wagst. Du kannst eine benutzerfreundliche Plattform für maschinelles Lernen wie Teachable Machine verwenden, um ein Modell zu erstellen und es in eine Python-Web-App einzubinden.
Wenn du bereits Erfahrung mit künstlicher Intelligenz und der Arbeit mit Datensätzen mithilfe von Jupyter Notebooks hast, ist dies ein guter nächster Schritt für dich.
In dieser Lektion lernst du einige der Python-Bibliotheken für maschinelles Lernen kennen und erfährst etwas über die verschiedenen Modelle für maschinelles Lernen, die du mit Python erstellen kannst.
Um ein maschinelles Lernmodell zu erstellen, gibt es 3 Hauptbestandteile.
DATENSATZ
FINDET MUSTER MIT LERNALGORITHMUS
VORHERSAGE!
Der Datensatz ist dein Input für das Modell. Er kann Text, Bilder, Töne oder Posen enthalten. In Lektion 2 haben wir mit Text- und numerischen Daten gearbeitet und dabei Jupyter Notebooks verwendet. In dieser Lektion werden wir weiter mit Textdaten arbeiten, und zwar in Form einer Tabellenkalkulation.
Beim Finden von Mustern geht es im Wesentlichen darum, das Modell für maschinelles Lernen anhand des Datensatzes zu erstellen. Python enthält viele Bibliotheken, mit denen ein KI-Modell aus Daten erstellt werden kann. In diesem Lehrplan werden wir viele der Funktionen aus dem scikit-learn-Paket verwenden. Zusätzlich zu den Bibliotheken, die es zur Verfügung stellt, enthält die Website viele ausgezeichnete Informationen über maschinelles Lernen und den Prozess der Modellbildung. Sie ist eine großartige Quelle, um mehr zu erfahren!
Sobald du dein Modell erstellt hast, kann es dazu verwendet werden, ein Ergebnis auf der Grundlage neuer Informationen vorherzusagen. Auch hierfür bietet Python Bibliotheken, die das ermöglichen.
DATEN VORVERARBEITEN
Bevor dein Datensatz an den Algorithmus zur Erstellung des Modells gesendet werden kann, muss er vorverarbeitetoder "bereinigt" werden, damit der Algorithmus zur Modellerstellung damit arbeiten und ein möglichst genaues Modell erstellen kann. Der größte Teil der Arbeit bei der Erstellung eines maschinellen Lernmodells liegt in der Vorverarbeitung. Du musst dir die Daten genau ansehen und entscheiden, was wichtig ist, was weggelassen werden kann und was bereinigt werden muss.
Was beinhaltet die Vorverarbeitung? Bei einem textbasierten Datensatz gibt es einige Dinge, die zu beachten sind.
Null-Werte
Manchmal enthält der Datensatz leere oder ungültige Werte, insbesondere wenn es sich um Umfragedaten handelt. Manchmal wirst du alle Zeilen mit Nullwerten eliminieren.
Wenn die Anzahl der Stichproben jedoch gering ist, möchtest du sie vielleicht nicht eliminieren. Eine andere Möglichkeit ist, einen Nullwert durch einen anderen Wert zu ersetzen. Dabei kann es sich um eine Null handeln oder um den Durchschnitt aller anderen Werte in diesem Feld.
Ausreißer
Manchmal enthalten die Daten eine oder zwei Stichproben, die sich stark vom Rest der Daten unterscheiden. Das könnte das Modell verzerren. Du möchtest nicht, dass die Ausreißer die Modellerstellung beeinflussen, deshalb werden Ausreißer oft aus dem Datensatz entfernt.
Du könntest zum Beispiel einen Datensatz haben, bei dem 95 % der Stichproben aus Personen im Alter von 10 bis 30 Jahren bestehen, aber es gibt ein paar Stichproben, bei denen die Personen über 50 sind. Da die überwiegende Mehrheit der Stichproben in der Altersgruppe 10-30 Jahre liegt, kannst du in Erwägung ziehen, die Stichproben aus der älteren Altersgruppe zu entfernen.
Normung
Oft variieren die Zahlen in einem großen Datensatz, je nachdem, welche Merkmale dargestellt werden. Du hast zum Beispiel ein Alter, das von 0 bis 70 variiert, aber auch ein Gehalt, das von 0 bis 500.000 reicht! Die Skalen sind sehr unterschiedlich, so dass ein Merkmal im Modell mehr zählen kann.
Um das zu beheben, kannst du die Daten so standardisieren, dass sie auf einer einzigen Skala liegen. scikit-learn bietet einen StandardScaler, der jedes Merkmal so aktualisiert, dass der Mittelwert 0 und die Standardabweichung 1 ist.
Ein weiterer Punkt, den du beachten solltest, ist eine ausgewogene Anzahl von Stichproben für jede Klasse oder jedes Label. Du solltest sicherstellen, dass die Anzahl der Proben für jede Klasse in deinem Datensatz ungefähr gleich ist.
Kodierung
KI mag Zahlen, nicht unbedingt Wörter. Daher ist es hilfreich, alle Daten in Zahlen umzuwandeln. scikit-learn bietet Encoder-Funktionen, mit denen du eine Reihe möglicher Textwerte ganz einfach in eine Reihe von Zahlen umwandeln kannst.
Ein Beispiel wäre das Aktivitätsniveau mit den Beispielwerten sitzend, leicht, mäßig, hoch. Diese Antworten könnten als Werte 0, 1, 2 und 3 kodiert werden, was für den Algorithmus zur Modellbildung viel einfacher zu handhaben ist.
DATEN SPALTIEREN
Nachdem du deine Daten vorverarbeitet hast, musst du sie in einen Trainings- und einen Testsatz aufteilen. Die Trainingsmenge wird zum Trainieren und Erstellen des Modells verwendet. Dann testest du dein Modell mit der Testmenge, um zu sehen, wie es abschneidet.
Es gibt Standardaufteilungen (in der Regel 75 % für das Training und 25 % für das Testen), aber du kannst es aufteilen, wie du willst. Auch hier gibt es Funktionen, die das alles für dich automatisieren.
ERSTELLEN DES MODELLS
Der nächste Schritt ist die Erstellung des Modells. Eine wichtige Entscheidung ist, welchen Algorithmus ich verwenden soll. Es gibt viele verschiedene Algorithmen für überwachtes Lernen, und es ist schwer zu wissen, welchen man verwenden soll. Ein guter Weg ist es, mehrere Algorithmen auszuprobieren und dann zu sehen, welcher die beste Genauigkeit liefert.
Der erste Schritt ist zu entscheiden, ob du eine Klassifizierung Algorithmus oder einen Regression Algorithmus brauchst. Das hängt davon ab, was du vorhersagen willst.
Klassifizierungsalgorithmen werden verwendet, um diskrete Ziele oder Klassen vorherzusagen. Zum Beispiel wäre die Klassifizierung von E-Mails als Spam oder nicht Spam ein Klassifizierungsproblem
Regressionsalgorithmen werden verwendet, um etwas vorherzusagen, das in einem kontinuierlichen Bereich liegt. Ein Beispiel wäre die Vorhersage, wie viel Gehalt eine Person bekommt. Die Vorhersage ist ein Zahlenbereich und die Ausgabe könnte ein beliebiger Wert innerhalb dieses Bereichs sein.
Hier sind nur einige der beliebtesten Algorithmen für die Modellerstellung.

Klassifizierung
- Entscheidungsbaum
- Zufalls-Wald
- K-Nächste Nachbarn
- Naive Bayes
- Logistische Regression
- Support-Vektor-Maschine
Regression
- Lineare Regression
- Ridge Regression
- Lasso-Regression
- Polynomielle Regression
- Bayessche lineare Regression
- Support-Vektor-Regression
Beachte, dass einige Algorithmen unter beide Typen fallen. Es gibt zum Beispiel sowohl einen Entscheidungsbaum-Klassifikator als auch einen Entscheidungsbaum-Regressor. Und eine Support Vector Machine arbeitet für die Klassifizierung, während die Support Vector Regression für die Regression arbeitet.
Wie entscheidest du also, welches Modell du verwenden solltest? Du solltest recherchieren, was andere Datenwissenschaftler/innen für verschiedene Situationen verwenden, um herauszufinden, was für dein Modell in Frage kommt. Du solltest auch verschiedene Algorithmen mit deinen Daten ausprobieren und dann herausfinden, welcher die beste Genauigkeit liefert. Du kannst auch die Parameter für einen bestimmten Algorithmus verändern, um zu sehen, ob er ein genaueres Modell liefert.
scitkit-learn stellt Funktionen für all diese Algorithmen bereit, sodass es ganz einfach ist, ein Modell zu erstellen.
BEWERTUNG DES MODELLS
Du möchtest, dass dein Modell so gut wie möglich ist, also musst du seine Leistung bewerten. Zwei gängige Variablen bei der Bewertung eines Modells sind Verzerrung und Varianz.
Abweichung ist die Differenz zwischen dem vorhergesagten Wert des Modells und dem richtigen Wert.
Abweichung gibt an, wie sehr sich die Vorhersagen ändern, wenn unterschiedliche Daten verwendet werden.
Du willst ein gutes Gleichgewicht zwischen Verzerrung und Varianz erreichen.
Hohe Verzerrung -> Underfitting.
Underfitting passiert, wenn das Modell zu einfach ist, um das Rauschen in den Trainingsdaten zu berücksichtigen. Das kann passieren, wenn es nicht genügend Daten oder nicht genügend Merkmale (Spalten) oder zu viel Rauschen in den Daten gibt. Wenn ein Modell sowohl bei den Trainingsdaten als auch bei den Testdaten nicht gut abschneidet, ist das ein Zeichen für Underfitting.
Hohe Varianz -> Overfitting.
Überanpassung passiert, wenn du ein Modell mit einem Datensatz trainierst und es sehr gut abschneidet, aber wenn du ihm dann neue Daten vorlegst, schneidet es überhaupt nicht mehr gut ab. Das kann passieren, wenn das Modell zu komplex ist und versucht, sich zu eng an die Trainingsdaten anzupassen. Das Modell kann bei den Trainingsdaten sehr gute Vorhersagen machen, aber bei den Testdaten schneidet es dann schlecht ab.
Eine Methode, um die Leistung eines Modells zu überprüfen, ist die Kreuzvalidierung.
Kreuzvalidierung bedeutet, dass du dein Modell mehrmals trainierst, wobei du jedes Mal eine andere Aufteilung der Trainings-/Testdaten verwendest. Dein Datensatz wird in mehrere Faltenoder Teilmengen. Dann wird ein Fold als Validierungs- oder Testdatensatz beibehalten und die restlichen Folds werden zum Trainieren des Modells verwendet. Dieser Vorgang wird mehrmals durchgeführt, sodass sich die Trainings- und Testdaten jedes Mal ändern.
sciikit-learn bietet auch eine Metrik Bibliothek, mit der du ganz einfach Leistungswerte für deine Modelle ermitteln kannst.
- Genauigkeitswert = richtige Vorhersagen/Gesamtvorhersagen
- Genauigkeit = richtig positive Ergebnisse/(richtig positive Ergebnisse + falsch positive Ergebnisse)
- recall = richtig positive Ergebnisse/(richtig positive Ergebnisse + falsch negative Ergebnisse)
- F1-Punktzahl = (2 x Genauigkeit x Rückruf)/(Genauigkeit + Rückruf)
- Spezifität = wahres Negativ/ (wahres Positiv + falsches Negativ)
- Konfusionsmatrix - zeigt die Anzahl der richtig positiven, richtig negativen, falsch positiven und falsch negativen Ergebnisse
Indem du die Metriken verschiedener Algorithmen prüfst, kannst du das beste Modell auswählen.
VORSCHAUEN!
Wenn du ein Modell hast, mit dem du zufrieden bist, willst du es in deiner App verwenden.
Es ist gängige Praxis, die Vorverarbeitung, Erstellung und Auswertung deines Modells mit Python in einer Umgebung wie Jupyter Notebooks durchzuführen. Von dort aus kannst du dein Modell als Datei exportieren.
Dann kannst du das Modell in deiner Streamlit-App laden und es für Vorhersagen nutzen.
In dieser Lektion wirst du den gesamten Prozess anhand eines Schlaganfallrisikodatensatzes durchlaufen. Du wirst sehen, wie du die Daten vorverarbeitest, Modelle mit verschiedenen Algorithmen erstellst und dann ein Modell in einer einfachen Streamlit-App verwendest, um das Schlaganfallrisiko anhand einiger Eingabemerkmale vorherzusagen.
AKTIVITÄT 1: TRAINIERE EIN KI-MODELL IN JUPYTER NOTEBOOK
Erforsche einen Schlaganfall-Risiko-Datensatz, um ein KI-Modell zu erstellen
- Lade einen Datensatz zur Schlaganfallvorhersage von Kaggle herunter.
- Arbeite mit den Daten in einem Jupyter Notebook, um:
- Überprüfe die Daten
- Daten vorbereiten, um sie für das Modell vorzubereiten
- Erstelle einige verschiedene Modelle
- Evaluiere und wähle ein Modell für deine App
- Exportiere das Modell
CHALLENGE

Probiere ein anderes Modell aus als die im Jupyter Notebook.
- Recherchiere auf der scikit-learn-Website nach anderen Klassifizierungsalgorithmen und sieh dir andere Beispiele für die Modellbildung auf Kaggle an.
- Wähle einen Algorithmus und füge den Code in dein Notizbuch ein, um das Modell zu erstellen.
- Verwende die Scikit-Learn-Metriken, um die Genauigkeit zu überprüfen.
Wie schneidet dein Modell ab? Ist es besser als die anderen Algorithmen im Notizbuch?
AKTIVITÄT 2: EINE VORHERSAGE-APP BAUEN
Verwende dein Modell in einer Streamlit App
Wähle das passende Video, je nachdem, wie du deine App programmierst, entweder lokal mit Visual Studio Code oder online mit Codespaces.
CHALLENGE

Der Iris-Datensatz ist ein klassischer Datensatz, der die Irisblüten anhand der Größe der Blütenblätter und Kelchblätter in drei Arten (setosa, versicolor und virginica) einteilt.
- Recherchiere den Datensatz, um seine Merkmale und Ziele kennenzulernen.
- Du kannst den Datensatz herunterladen und dein eigenes Modell erstellen oder dieses Modell(Pickle-Datei) verwenden, das mit K-nearest neighbors erstellt wurde. Beachte, dass für diesen Datensatz kein Scaler benötigt wurde. Die Pickle-Datei enthält nur das Modell.
- Importiere das Modell und erstelle eine Streamlit-App, um die Irisarten anhand der vier Datensatzmerkmale vorherzusagen.
TECHNOVATION INSPIRATION
Hier sind einige erstaunliche Beispiele von Technovation-Teilnehmern, die Python und Streamlit verwendet haben, um Web-Apps mit maschinellen Lernmodellen zu erstellen.
T.E.D.D.Y - Textbasierter Frühwarnsystem für Jugendliche , von Team TEDDY aus den USATEDDY hilft Lehrern und Beratern dabei, psychische Probleme von Schülern frühzeitig zu erkennen. TEDDY nutzt KI, um Sätze zu erkennen, die negative Gefühle ausdrücken oder Sprachmuster aufweisen, die von Menschen mit Depressionen erwartet werden. Dann können die Schüler/innen zur Unterstützung an einen Berater verwiesen werden.
REFLEXION
Du hast den gesamten Prozess der Vorverarbeitung eines Datensatzes, der Erstellung mehrerer Modelle und der Bewertung und Auswahl eines Modells für die Verwendung in einer App durchlaufen. Das ist eine ganze Menge, die du in einer Lektion lernen kannst!

ÜBERPRÜFUNG DER SCHLÜSSELBEGRIFFE
- Preprocessing - Einen Datensatz nehmen und sicherstellen, dass die darin enthaltenen Daten für das Training eines maschinellen Lernmodells geeignet sind
- Klassifizierungsalgorithmus - Ein Algorithmus, der verwendet wird, um ein maschinelles Lernmodell zu trainieren, das diskrete Werte klassifiziert oder vorhersagt.
- Regressionsalgorithmus - Algorithmus, mit dem ein maschinelles Lernmodell trainiert wird, um einen Wert in einem kontinuierlichen Bereich vorherzusagen
- Verzerrung - die Differenz zwischen dem vorhergesagten Wert des Modells und dem richtigen Wert, die auf falsche Annahmen zurückzuführen ist, die das Modell vereinfachen
- Varianz - die Schwankungsbreite der Modellvorhersagen, wenn ein Modell nicht in der Lage ist, neue Daten zu verallgemeinern
- Überanpassung - wenn das Modell zu gut zu den Trainingsdaten passt, so dass es neue Daten nicht gut vorhersagen kann, verursacht durch eine hohe Varianz im Modell
- Underfitting - wenn ein Modell zu stark vereinfacht ist und weder bei den Trainings- noch bei den Testdaten gut abschneidet, weil es zu viele Verzerrungen oder Annahmen enthält
ZUSÄTZLICHE RESSOURCEN
Maschinelles Lernen
- Geeks for Geeks Machine Learning Tutorial - gibt eine gute Einführung und einen Überblick über den Prozess des maschinellen Lernens und die Terminologie
- Das Scikit-Learn-Tutorial von Simplilearn - geht einen Weinqualitätsdatensatz durch, um die Verwendung von Scikit-Learn in einem Jupyter Notebook zu üben
- Maschinelles Lernen mit scikit-learn - eine vollständige Youtube-Playlist von Data School
Streamlit
- Build a Machine Learning Web App from Scratch with Patrick Loeber - ein weiteres Beispiel für die Erstellung eines Modells und dessen Verwendung in einer Web-App, von Anfang bis Ende
- Bildklassifizierer mit Streamlit, wenn dein Modell auf Bildern trainiert ist