0Pricing
Python Academy · Lekcja

Modele liniowe: regresja i klasyfikacja

Proszę trenować modele regresji liniowej i regresji logistycznej.

Modele liniowe: regresja i klasyfikacja to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Regresja liniowa

LinearRegression dopasowuje prostą linię (lub hiperpłaszczyznę), minimalizując błąd metody najmniejszych kwadratów.

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)

Współczynniki modelu

Po dopasowaniu należy sprawdzić coef_ (wagi cech) oraz 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_)  # ~0

Regresja Ridge i Lasso

Ridge (L2) i Lasso (L1) dodają regularyzację, aby zapobiegać przeuczeniu. Parametr alpha określa siłę regularyzacji.

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)

Regresja logistyczna

LogisticRegression to liniowy klasyfikator do problemów binarnych lub wieloklasowych. Wbrew nazwie przewiduje prawdopodobieństwa klas.

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)))

Wieloklasowa regresja logistyczna

Należy ustawić multi_class="multinomial" lub użyć domyślnego OvR (one-vs-rest) dla co najmniej 3 klas.

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))

Skalowanie cech w modelach liniowych

Cechy w modelach liniowych należy zawsze skalować, szczególnie w przypadku regularyzacji. Nieskalowane cechy powodują pozornie różne kary.

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))

Krzywa uczenia

Krzywa uczenia pokazuje, jak poprawia się wydajność modelu wraz ze wzrostem ilości danych treningowych — jest przydatna do diagnozowania niedouczenia i przeuczenia.

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))

Współczynnik R² w regresji

r2_score mierzy proporcję wyjaśnionej wariancji. Wartość 1.0 oznacza wynik idealny, a 0 oznacza, że model nie jest lepszy od przewidywania średniej.

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)))

Cechy wielomianowe

PolynomialFeatures umożliwia dopasowanie nieliniowych zależności za pomocą modelu liniowego.

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]]))   # ~36

SGDClassifier i SGDRegressor

Stochastyczny spadek gradientu umożliwia pracę z bardzo dużymi zbiorami danych, dla których standardowe solvery działają zbyt wolno.

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))

Ścieżki regularyzacji

Wartość alpha można zmieniać w ramach siatki za pomocą RidgeCV/LassoCV, które automatycznie wybierają najlepszą wartość alpha na podstawie walidacji krzyżowej.

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_)

Szybkie sprawdzenie

Jaka jest najważniejsza różnica między regresją Ridge a regresją Lasso?

Podsumowanie

Należy używać LinearRegression do regresji, a LogisticRegression do klasyfikacji. W celu regularyzacji należy dodać Ridge/Lasso. Cechy należy zawsze skalować. Do problemów nieliniowych należy używać PolynomialFeatures. Ocenę należy przeprowadzać za pomocą r2_score (regresja) lub accuracy_score (klasyfikacja).

Często zadawane pytania

Czy lekcja „Modele liniowe: regresja i klasyfikacja” jest bezpłatna?

Tak — pełny tekst „Modele liniowe: regresja i klasyfikacja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Modele liniowe: regresja i klasyfikacja”?

Proszę trenować modele regresji liniowej i regresji logistycznej. Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Modele liniowe: regresja i klasyfikacja”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. API scikit-learn: fit, transform, predict
  2. Modele liniowe: regresja i klasyfikacja
  3. Modele drzewiaste: drzewa decyzyjne i lasy losowe
  4. Ocena modeli i walidacja krzyżowa
← Powrót do Python Academy