Lineare Modelle: Regression und Klassifikation
Trainieren Sie Modelle für lineare und logistische Regression.
Lineare Modelle: Regression und Klassifikation ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Lineare Regression
LinearRegression passt eine Gerade (oder Hyperebene) an, indem der Fehler nach der Methode der kleinsten Quadrate minimiert wird.
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
X, y = make_regression(n_samples=200, n_features=5, noise=10, random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = LinearRegression().fit(X_tr, y_tr)
print("RMSE:", mean_squared_error(y_te, model.predict(X_te))**0.5)Modellkoeffizienten
Untersuchen Sie nach dem Anpassen coef_ (Merkmalsgewichte) und intercept_.
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([[1],[2],[3]])
y = np.array([2, 4, 6])
model = LinearRegression().fit(X, y)
print("Coef:", model.coef_) # [2.]
print("Intercept:", model.intercept_) # ~0Ridge- und Lasso-Regression
Ridge (L2) und Lasso (L1) fügen eine Regularisierung hinzu, um Overfitting zu verhindern. alpha steuert die Stärke der Regularisierung.
from sklearn.linear_model import Ridge, Lasso
from sklearn.datasets import make_regression
X, y = make_regression(n_features=20, noise=15, random_state=0)
ridge = Ridge(alpha=1.0).fit(X, y)
lasso = Lasso(alpha=0.1).fit(X, y)
print("Ridge coef[:5]:", ridge.coef_[:5])
print("Lasso coef[:5]:", lasso.coef_[:5]) # some are 0 (sparse)Logistische Regression
LogisticRegression ist ein linearer Klassifikator für binäre Probleme oder Probleme mit mehreren Klassen. Trotz seines Namens sagt er Klassenwahrscheinlichkeiten voraus.
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = LogisticRegression().fit(X_tr, y_tr)
print("Accuracy:", accuracy_score(y_te, model.predict(X_te)))Logistische Regression für mehrere Klassen
Setzen Sie multi_class="multinomial" oder verwenden Sie für 3 oder mehr Klassen das standardmäßige OvR (one-vs-rest).
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=200).fit(X, y)
print("Classes:", model.classes_) # [0 1 2]
print("Accuracy:", model.score(X, y))Skalierung von Merkmalen für lineare Modelle
Skalieren Sie Merkmale für lineare Modelle immer, insbesondere bei Verwendung von Regularisierung. Nicht skalierte Merkmale führen zu irreführend unterschiedlichen Straftermen.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
pipe = Pipeline([
("scale", StandardScaler()),
("clf", LogisticRegression())
])
pipe.fit(X_tr, y_tr)
print(pipe.score(X_te, y_te))Lernkurve
Eine Lernkurve zeigt, wie sich die Modellleistung durch zusätzliche Trainingsdaten verbessert – nützlich zur Diagnose von Underfitting und Overfitting.
from sklearn.model_selection import learning_curve
import numpy as np
train_sizes, train_scores, val_scores = learning_curve(
LogisticRegression(), X, y, cv=5,
train_sizes=np.linspace(0.1, 1.0, 5)
)
print("Val mean:", val_scores.mean(axis=1))R²-Wert für Regression
r2_score misst den Anteil der erklärten Varianz. 1.0 ist perfekt, 0 bedeutet, dass das Modell nicht besser ist, als den Mittelwert vorherzusagen.
from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
X, y = make_regression(noise=20, random_state=0)
model = LinearRegression().fit(X, y)
print("R²:", r2_score(y, model.predict(X)))Polynomiale Merkmale
Verwenden Sie PolynomialFeatures, um nichtlineare Beziehungen mit einem linearen Modell anzupassen.
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([[1],[2],[3],[4],[5]])
y = np.array([1, 4, 9, 16, 25]) # y = x^2
pipe = Pipeline([
("poly", PolynomialFeatures(degree=2)),
("lr", LinearRegression())
])
pipe.fit(X, y)
print(pipe.predict([[6]])) # ~36SGDClassifier und SGDRegressor
Stochastischer Gradientenabstieg skaliert auf sehr große Datensätze, bei denen Standard-Solver zu langsam sind.
from sklearn.linear_model import SGDClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=100_000, random_state=0)
pipe = Pipeline([("sc", StandardScaler()), ("sgd", SGDClassifier())])
pipe.fit(X, y)
print(pipe.score(X, y))Regularisierungspfade
Variieren Sie alpha über ein Raster mit RidgeCV/LassoCV. Dabei wird der beste Alpha-Wert automatisch per Kreuzvalidierung ausgewählt.
from sklearn.linear_model import RidgeCV, LassoCV
from sklearn.datasets import make_regression
X, y = make_regression(n_features=20, noise=10, random_state=0)
ridge = RidgeCV(alphas=[0.1, 1, 10]).fit(X, y)
print("Best alpha:", ridge.alpha_)Kurze Überprüfung
Was ist der wichtigste Unterschied zwischen Ridge- und Lasso-Regression?
Zusammenfassung
Verwenden Sie LinearRegression für Regression und LogisticRegression für Klassifikation. Fügen Sie für die Regularisierung Ridge/Lasso hinzu. Skalieren Sie Merkmale immer. Verwenden Sie PolynomialFeatures für nichtlineare Probleme. Bewerten Sie mit r2_score (Regression) oder accuracy_score (Klassifikation).
Häufig gestellte Fragen
Ist die Lektion „Lineare Modelle: Regression und Klassifikation“ kostenlos?
Ja — der vollständige Text von „Lineare Modelle: Regression und Klassifikation“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Lineare Modelle: Regression und Klassifikation“?
Trainieren Sie Modelle für lineare und logistische Regression. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Python Academy zu starten?
Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Lineare Modelle: Regression und Klassifikation“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?
Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Die scikit-learn-API: fit, transform, predict
- Lineare Modelle: Regression und Klassifikation
- Baumbasierte Modelle: Entscheidungsbäume und Random Forests
- Modellbewertung und Kreuzvalidierung