KI-Konzepte in Python

Lineare und logistische Regression in Python

Regression ist die einfachste Form des maschinellen Lernens. Lineare Regression sagt eine Zahl mit einer Geraden voraus; logistische Regression schickt diese Gerade durch eine Sigmoid-Funktion, um die Wahrscheinlichkeit einer Ja/Nein-Antwort vorherzusagen.

Das Konzept in einfachen Worten

Regression ist die einfachste Form des maschinellen Lernens. Lineare Regression sagt eine Zahl mit einer Geraden voraus; logistische Regression schickt diese Gerade durch eine Sigmoid-Funktion, um die Wahrscheinlichkeit einer Ja/Nein-Antwort vorherzusagen.

Passe mit der Methode der kleinsten Quadrate eine Gerade an und verwandle dann mit logistischer Regression einen Score in eine Wahrscheinlichkeit.

Die wichtigsten Ideen

  • Lineare Regression sagt stetige Werte wie Preise oder Temperaturen voraus.
  • Logistische Regression sagt eine Wahrscheinlichkeit für zwei Klassen voraus.
  • Beide lassen sich statt mit einer geschlossenen Formel auch mit Gradientenabstieg trainieren.
  • Ein Perzeptron ist ein verwandter Klassifikator, der seine Gewichte nur bei einem Fehler anpasst.

Wann wird dieser Ansatz verwendet?

  • Verstehen, was in neuronalen Netzen und KI-Bibliotheken passiert.
  • Die Idee lernen, bevor du sie in den passenden Challenges umsetzt.
  • Dich auf Kurse zu maschinellem Lernen, Vorstellungsgespräche und Projekte vorbereiten.

Selbst ausprobieren

Klicke in das linke Diagramm, um Punkte hinzuzufügen, und sieh, wie sich die beste Gerade anpasst. Rechts verschiebst du mit w und b die Entscheidungsgrenze.

Beispielcode

Code ausführen →
main.py
import math

# Linear regression: find the line that best fits the points (least squares).
xs = [1, 2, 3, 4, 5]
ys = [2.1, 3.9, 6.2, 8.1, 9.8]
mean_x, mean_y = sum(xs) / len(xs), sum(ys) / len(ys)
slope = sum((x - mean_x) * (y - mean_y) for x, y in zip(xs, ys)) / sum((x - mean_x) ** 2 for x in xs)
intercept = mean_y - slope * mean_x
print(f"line: y = {slope:.2f}x + {intercept:.2f}")
print("predict x=6:", round(slope * 6 + intercept, 2))

# Logistic regression turns a score into a probability with the sigmoid.
def predict_pass(hours_studied, weight=1.5, bias=-4.0):
    return 1 / (1 + math.exp(-(weight * hours_studied + bias)))

for hours in (1, 3, 5):
    p = predict_pass(hours)
    print(f"{hours} hours -> pass probability {p:.2f} -> {'pass' if p >= 0.5 else 'fail'}")

Erwartete Ausgabe

line: y = 1.96x + 0.14
predict x=6: 11.9
1 hours -> pass probability 0.08 -> fail
3 hours -> pass probability 0.62 -> pass
5 hours -> pass probability 0.97 -> pass

So funktioniert es

Die Formel der kleinsten Quadrate findet Steigung und Achsenabschnitt, bei denen die quadrierten Abstände zu den Punkten am kleinsten sind, und liefert y = 1.96x + 0.14. predict_pass() berechnet aus den Lernstunden einen Score, den Sigmoid in eine Wahrscheinlichkeit umwandelt; 0.5 ist die Grenze zwischen nicht bestanden und bestanden.

Ändere die Werte und führe das Programm im CodeUtility Python Online-Compiler aus, ohne Python lokal zu installieren.

Übungsaufgaben

Verändere Eingaben und Randfälle, bevor du die Lösung mit größeren Datenmengen testest.

  1. Ändere Eingaben oder Gewichte und sage die Ausgabe vor dem Ausführen voraus.
  2. Gib die Zwischenwerte aus, um jeden Rechenschritt zu verfolgen.
  3. Löse die verlinkten Challenges unten, um die Idee selbst umzusetzen.
In der Python-IDE ausführen →

Mit einer Challenge üben

Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.

Alle Challenges