Leitfäden für Modelle und Modalitäten10. November 2026Flatkey Team

Machine Learning mit Python: erstes Modell und wann eine GPU sinnvoll ist

Ein praxisnahes Tutorial auf der CPU mit scikit-learn, Fehlerbewertung und einer Infrastrukturentscheidung auf Basis der tatsächlichen Arbeit – ohne dass für den Einstieg eine GPU nötig ist.

Machine Learning mit Python: erstes Modell und wann eine GPU sinnvoll ist

Um mit Machine Learning mit Python zu beginnen, wählen Sie eine kleine Aufgabe, trennen Sie Trainings- und Testdaten und vergleichen Sie ein einfaches Modell mit einer grundlegenden Referenz. Für die erste Übung müssen Sie keine GPU mieten. In diesem Leitfaden erstellen wir einen vollständigen Klassifikator auf der CPU, interpretieren seine Fehler und entscheiden, wann es sinnvoll ist, die Infrastruktur zu wechseln.

Das Ziel ist, dass Sie ein Experiment erhalten, das Sie wiederholen und erklären können. Eine einzelne Vorhersage korrekt zu treffen, ist weniger nützlich, als zu wissen, welche Daten das Modell gesehen hat, wie es bewertet wurde und wo es scheitert.

Was Sie zuerst bei Machine Learning mit Python lernen sollten

Ein überwachtes Lernprojekt hat Eingaben, die Merkmale genannt werden, und eine bekannte Antwort, die Zielvariable genannt wird. Im Beispiel dieses Artikels sind die Merkmale Messwerte von Blumen und die Zielvariable ist die Art. Das Modell lernt anhand des Trainingsdatensatzes eine Beziehung und versucht dann, getrennt gehaltene Beispiele zu klassifizieren.

Bevor Sie eine Bibliothek auswählen, formulieren Sie die Frage, die Sie beantworten möchten:

Aufgabe Art der Antwort Mögliches erstes Experiment
Eine Beobachtung klassifizieren Eine Kategorie Logistische Regression oder Entscheidungsbaum
Eine Menge schätzen Eine Zahl Lineare Regression und Fehleranalyse
Gruppen ohne Labels finden Cluster Eine Clustering-Methode und Untersuchung der Gruppen
Mit Bildern oder Sprache in großem Maßstab arbeiten Komplexere Repräsentationen und Vorhersagen Eine geeignete Deep-Learning-Bibliothek, nachdem die Bewertung festgelegt wurde

Wählen Sie nicht nur deshalb ein neuronales Netzwerk, weil es fortschrittlicher wirkt. Wenn eine einfache Lösung die Aufgabe innerhalb der erforderlichen Kosten und Frist löst, ist sie eine wichtige Referenz für jede spätere Alternative.

Bereiten Sie eine isolierte Umgebung vor

Sie benötigen eine mit scikit-learn kompatible Python-Installation und Zugriff auf das Terminal. Erstellen Sie einen Arbeitsordner und eine virtuelle Umgebung, um Konflikte mit anderen Projekten zu vermeiden:

python -m venv .venv

Unter macOS oder Linux aktivieren Sie sie mit source .venv/bin/activate. Verwenden Sie in Windows PowerShell .venv\Scripts\Activate.ps1, entsprechend den lokalen Terminalrichtlinien. Installieren Sie anschließend die Bibliothek und halten Sie die Versionen fest:

python -m pip install scikit-learn
python -m pip freeze > requirements.txt

Verwenden Sie python3 statt python, wenn dies der Name der ausführbaren Datei auf Ihrem Computer ist. Die Abhängigkeitsdatei hilft dabei, die Umgebung neu zu erstellen; bewahren Sie außerdem die Python-Version, den Code und die Konfiguration des Experiments auf.

Ein erstes vollständiges Modell: Blumenklassifikation

Der Iris-Datensatz von scikit-learn enthält 150 Beobachtungen, vier numerische Merkmale und drei Klassen. Er ist klein und eignet sich zum Erlernen des Arbeitsablaufs, zeigt aber nicht, dass ein System für reale Daten bereit ist.

Speichern Sie den folgenden Code als exemplo_iris.py und führen Sie python exemplo_iris.py aus. Er verwendet 120 Beobachtungen für das Training und 30 für den Test. Die stratifizierte Aufteilung erhält die Repräsentation der Klassen; der feste Seed ermöglicht es, dieselbe Aufteilung zu wiederholen.

import platform
from time import perf_counter
import sklearn
from sklearn.datasets import load_iris
from sklearn.dummy import DummyClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, f1_score, confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.20, random_state=42, stratify=y
)
models = {
    "baseline": DummyClassifier(strategy="most_frequent"),
    "logistica": make_pipeline(
        StandardScaler(), LogisticRegression(max_iter=1000)
    ),
}
for name, model in models.items():
    start = perf_counter()
    model.fit(X_train, y_train)
    train_seconds = perf_counter() - start
    pred = model.predict(X_test)
    print(name, "acuracia=", round(accuracy_score(y_test, pred), 3),
          "f1_macro=", round(f1_score(
              y_test, pred, average="macro", zero_division=0
          ), 3))
    print("matriz de confusao:", confusion_matrix(y_test, pred).tolist())
    print("tempo de treino (s):", round(train_seconds, 6))
print("Python:", platform.python_version(),
      "scikit-learn:", sklearn.__version__)

Der DummyClassifier liefert einen Vergleich, der keine Beziehung zwischen den Merkmalen und der Klasse lernt. Mit der hier verwendeten Strategie sagt er die im Training häufigste Klasse voraus. Wenn ein aufwendigeres Modell eine solche Referenz nicht verbessert, untersuchen Sie Daten, Zielsetzung und Bewertung, bevor Sie weitere Ressourcen einsetzen. Die Strategien finden Sie in der Dokumentation zu DummyClassifier.

Die logistische Regression erhält die Daten über eine Pipeline: zuerst die Standardisierung, dann den Klassifikator. Die Transformationen werden beim Training angepasst und anschließend auf den Test erneut angewendet. Dadurch wird vermieden, dass die Skalierung anhand von Informationen berechnet wird, die für die Auswertung reserviert sein sollten – eine häufige Form von Datenleck. Die Dokumentation zu den Best Practices von scikit-learn erläutert diese Vorsichtsmaßnahme.

So interpretieren Sie die Ausgabe, ohne sich selbst zu täuschen

Bei der Ausführung dieses Beispiels auf einer CPU mit Python 3.14.4 und scikit-learn 1.9.1 erhielten wir die folgenden Ergebnisse. Es handelt sich um Ergebnisse dieser Übung und dieser Datenaufteilung, nicht um ein Versprechen für einen anderen Datensatz.

Modell Genauigkeit im Test Makro-F1
Referenz der häufigsten Klasse 0,333 0,167
Standardisierung + logistische Regression 0,933 0,933

Die Matrix des zweiten Modells lautete [[10, 0, 0], [0, 9, 1], [0, 1, 9]]: Zwei der 30 Blumen im Test wurden zwischen den letzten beiden Klassen verwechselt. Das ist informativer, als nur zu sagen, dass das Modell etwa 93 % korrekt klassifiziert hat.

Die Genauigkeit gibt den Anteil korrekter Vorhersagen im ausgewerteten Datensatz an. Der Makro-F1 berechnet den F1-Wert für jede Klasse und bildet einen Durchschnitt, ohne der häufigsten Klasse ein höheres Gewicht zu geben. Die Konfusionsmatrix zeigt, welche Klassen verwechselt wurden. Nutzen Sie alle drei Perspektiven, um das Verhalten zu verstehen, statt nur nach der größten Zahl zu suchen.

Die ausgegebene Zeit ist lediglich die Trainingszeit dieser Ausführung auf Ihrem Computer. Bei einem so kleinen Datensatz variiert sie je nach Maschine und Messrauschen. Verwenden Sie diese Zahl nicht, um Einsparungen in der Cloud zu versprechen oder CPU und GPU zu vergleichen.

Auch das Ergebnis für Iris sollte nicht zu einer Genauigkeitserwartung für Ihr Produkt werden. Bei eigenen Daten können Verteilung, Qualität der Labels und Kosten von Fehlern völlig anders sein. Ein seltener Fehler kann wichtiger sein als Dutzende leicht erzielbarer Treffer.

Beantworten Sie vor dem Wechsel des Algorithmus folgende Fragen:

  1. Hat das Modell die einfache Referenz unter Verwendung genau desselben Tests übertroffen?
  2. In welcher Klasse häufen sich die Fehler, und welche Auswirkungen haben sie auf die Aufgabe?
  3. Gibt es Informationen in den Eingaben, die erst nach der Vorhersage verfügbar wären?
  4. Repräsentiert der Test neue Beispiele, oder enthält er Duplikate und Beobachtungen, die mit dem Training zusammenhängen?
  5. Bleibt die Leistung bei anderen gültigen Datenaufteilungen erhalten?

Von der Übung zu einem realen Datensatz

Die zufällige Aufteilung ist für Iris praktisch. Sie kann ungeeignet sein, wenn Sie zukünftige Ereignisse vorhersagen, mehrere Zeilen pro Kunde haben oder Kopien derselben Beobachtung finden. Berücksichtigen Sie in diesen Fällen eine zeitliche oder gruppenbasierte Trennung, entsprechend der späteren Verwendung des Modells. Der Parameter random_state korrigiert keine konzeptionell falsche Aufteilung. Die Referenz zu train_test_split beschreibt die für diese einfache Aufteilung verfügbaren Optionen.

Reservieren Sie die Validierung für die Auswahl von Konfigurationen und halten Sie einen separaten finalen Test zurück. Wenn Sie den Test wiederholt heranziehen, um die nächste Anpassung zu entscheiden, beeinflusst er Ihre Entscheidungen. Für ein kleines Projekt hilft bereits eine Experimenttabelle:

Eintrag Was zu notieren ist
Daten Herkunft, Datum, Größe, Spalten und Ausschlussregel
Aufteilung Zeitlich, nach Gruppen oder zufällig; Seed, falls anwendbar
Modell Algorithmus, Parameter und Version der Abhängigkeiten
Auswertung Hauptmetrik, Fehler pro Klasse und Vergleich mit der Referenz
Betrieb Zeit, Speicher, Größe des Artefakts und gemessene Kosten
Entscheidung Was sich verbessert hat und welches Problem weiterhin offen ist

Wenn Sie Iris durch eine eigene Tabelle ersetzen, validieren Sie vor dem Training Typen, fehlende Felder und Kategorien. Halten Sie die Transformationen zusammen mit dem Modell, damit die Vorhersage dieselbe Datenaufbereitung verwendet. Eine Spalte, deren Einheit sich geändert hat, kann Probleme verursachen, selbst wenn der Code weiterhin ausgeführt wird.

Wann eine GPU hilft – und wann nicht

Das Beispiel in diesem Leitfaden arbeitet auf der CPU. Das Hinzufügen einer Grafikkarte zum Rechner führt nicht automatisch dazu, dass der gesamte scikit-learn-Code sie verwendet. Das Projekt dokumentiert GPU-Unterstützung für eine begrenzte Auswahl von Schätzern und Konfigurationen, auch über spezifische Eingaben und Optionen. Prüfen Sie den genauen Pfad des gewählten Algorithmus.

Eine GPU ist ein Experiment wert, wenn es eine kompatible Implementierung und eine Arbeitslast gibt, die sie nutzen kann, etwa bestimmte Trainings neuronaler Netze oder die Verarbeitung in Batches. Dennoch muss der Gewinn die Datenübertragung, die Einrichtung der Umgebung und die Kosten der Infrastruktur aufwiegen.

Beobachtete Situation Empfohlene nächste Maßnahme
Wenige Daten und schnelles Training auf der CPU Datenqualität und Evaluierung priorisieren
Einlesen oder Vorbereitung beansprucht den Großteil der Zeit Speicherung, Laden und Transformationen messen
Algorithmus ohne GPU-kompatiblen Ausführungspfad Bibliothek überprüfen oder bei der CPU bleiben
GPU-kompatibles Training beansprucht einen großen Teil des Zyklus Einen kontrollierten Test mit der vorgesehenen Konfiguration durchführen
Großes Modell oder hohes Inferenzvolumen Speicher, Latenz und Parallelität unter realer Last messen

Vergleichen Sie die Gesamtzeit bis zu einem brauchbaren Ergebnis, nicht nur die Ausführung eines Vorgangs. Berücksichtigen Sie Installation, Übertragung, Training, Validierung, Speicherung und Leerlaufzeiten. Eine schnellere Alternative pro Epoche kann schlechter sein, wenn sie mehr Versuche benötigt, um die erforderliche Qualität zu erreichen.

Wenn das Projekt diesen Punkt erreicht, ermöglicht Flatkey Cloud GPU die Bewertung von Mietoptionen für NVIDIA-GPUs. Prüfen Sie Konfiguration, Region, Verfügbarkeit und Bedingungen für die vorgesehene Last. Berücksichtigen Sie die Größe des Datensatzes, die Bibliothek, den benötigten Speicher und das Testziel; für den Abschluss dieses Tutorials ist keine GPU erforderlich.

Bevor Sie das Modell einsetzen

Definieren Sie das akzeptierte Eingabeformat, das Verhalten bei ungültigen Feldern und die Überwachung von Fehlern nach der Veröffentlichung. Bewahren Sie die Modellversion und die Datenaufbereitung zusammen auf. Testen Sie eine Vorhersage mit repräsentativen Daten außerhalb des Notebooks, bevor Sie über Skalierung nachdenken.

Wenn der nächste Schritt darin besteht, ein Sprachmodell mit eigener Infrastruktur bereitzustellen, behandelt der Leitfaden zur Bereitstellung von vLLM eine andere Art von Last. Verwechseln Sie einen kleinen tabellarischen Klassifikator nicht mit dem Betrieb eines LLM: Die Anforderungen an Speicher, Evaluierung und Server sind unterschiedlich.

Häufig gestellte Fragen

Brauche ich eine GPU, um Machine Learning mit Python zu lernen?

Nein. Das vorgestellte Beispiel kann auf einer CPU ausgeführt werden. Wählen Sie eine leistungsfähigere Infrastruktur, wenn ein gemessener Engpass besteht und eine Implementierung vorhanden ist, die sie nutzen kann.

Warum sollte man vor einem komplexeren Modell eine Basisreferenz verwenden?

Sie zeigt, was mit einer einfachen Regel erreicht werden kann. Dadurch lässt sich beurteilen, ob das Modell etwas Nützliches gelernt hat und ob die zusätzliche Komplexität gerechtfertigt ist.

Garantiert derselbe Seed in jeder Umgebung dasselbe Ergebnis?

Er legt die zufälligen Entscheidungen fest, die von diesem Parameter gesteuert werden. Dokumentieren Sie auch Versionen und Umgebung; Unterschiede bei Implementierung und Ausführung können die Ergebnisse beeinflussen. Verwechseln Sie die Reproduzierbarkeit einer Aufteilung nicht mit einer universellen Leistungsgarantie.

Was ist das nächste Projekt nach Iris?

Wählen Sie eine kleine Aufgabe mit Daten, die Sie verstehen, einem überprüfbaren Ziel und einem Erfolgskriterium. Wiederholen Sie den Prozess: Referenz, korrekte Aufteilung, Modell, Fehleranalyse und Messung. Diese Gewohnheit ist die Grundlage, um sich in Machine Learning mit Python weiterzuentwickeln, ohne die Kosten vor dem Bedarf zu erhöhen.