0Pricing
Python Academy · Lekcja

API scikit-learn: fit, transform, predict

Proszę zrozumieć interfejs estymatora oraz schemat podziału na zbiór treningowy i testowy.

API scikit-learn: fit, transform, predict to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 1 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.

Czym jest scikit-learn

scikit-learn to podstawowa biblioteka Pythona do klasycznego uczenia maszynowego. Zapewnia spójny interfejs API: każdy estymator ma metodę fit(), a większość z nich ma także predict() lub transform().

from sklearn.linear_model import LinearRegression
import numpy as np

X = np.array([[1],[2],[3],[4],[5]])
y = np.array([2, 4, 6, 8, 10])

model = LinearRegression().fit(X, y)
print(model.predict([[6]]))   # [12.]

Podział na dane treningowe i testowe

Dane należy zawsze podzielić przed trenowaniem, aby ocenić, jak dobrze model uogólnia się na nieznane dane.

from sklearn.model_selection import train_test_split
import numpy as np

X = np.random.rand(100, 5)
y = (X[:,0] > 0.5).astype(int)

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)
print(X_train.shape, X_test.shape)   # (80,5) (20,5)

fit() — Trenowanie

estimator.fit(X, y) trenuje model na X (cechach) i y (etykietach). W przypadku metod nienadzorowanych przekazywane jest tylko X.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=200, random_state=0)
model = LogisticRegression()
model.fit(X, y)
print("Trained:", model.classes_)

predict() i predict_proba()

predict(X) zwraca etykiety klas, a predict_proba(X) — prawdopodobieństwa klas dla klasyfikatorów.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
model = LogisticRegression().fit(X, y)

print(model.predict(X[:5]))          # [0 1 0 ...]
print(model.predict_proba(X[:2]))    # [[0.7 0.3] ...]

Transformatory: fit i transform

Transformatory (skalery, kodery) mają metody fit(X) i transform(X). Należy zawsze dopasowywać je wyłącznie do danych treningowych, a następnie transformować zarówno dane treningowe, jak i testowe.

from sklearn.preprocessing import StandardScaler
import numpy as np

X_train = np.array([[1,2],[3,4],[5,6]])
X_test  = np.array([[2,3],[4,5]])

scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)   # fit + transform
X_test_s  = scaler.transform(X_test)        # transform only (using train stats)

Pipeline

Pipeline łączy transformatory i estymator w jeden obiekt. Zapobiega wyciekowi danych, ponieważ prawidłowo stosuje transformacje w ramach walidacji krzyżowej.

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("clf", SVC())
])
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))

Dokładność i inne metryki

Do oceny klasyfikatorów należy używać accuracy_score, f1_score i classification_report.

from sklearn.metrics import accuracy_score, classification_report

y_pred = model.predict(X_test)
print(accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))

Walidacja krzyżowa

cross_val_score ocenia model za pomocą walidacji krzyżowej k-fold, bez konieczności ręcznego dzielenia danych.

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
scores = cross_val_score(LogisticRegression(), X, y, cv=5)
print(f"CV scores: {scores.mean():.3f} ± {scores.std():.3f}")

Strojenie hiperparametrów za pomocą GridSearchCV

GridSearchCV wyczerpująco przeszukuje siatkę parametrów za pomocą walidacji krzyżowej, aby znaleźć najlepsze hiperparametry.

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
param_grid = {"C": [0.1, 1, 10], "kernel": ["rbf", "linear"]}
gs = GridSearchCV(SVC(), param_grid, cv=5)
gs.fit(X, y)
print(gs.best_params_, gs.best_score_)

Wstępne przetwarzanie: LabelEncoder i OneHotEncoder

Etykiety kategoryczne należy kodować za pomocą LabelEncoder, a cechy kategoryczne za pomocą OneHotEncoder lub ColumnTransformer.

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
import numpy as np

le = LabelEncoder()
print(le.fit_transform(["cat","dog","cat","fish"]))   # [0 1 0 2]

ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"],["green"],["blue"]]))

Zapisywanie i wczytywanie modeli

Wytrenowane modele należy utrwalać za pomocą joblib, które jest szybsze niż pickle w przypadku tablic NumPy.

import joblib
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
model = LogisticRegression().fit(X, y)

joblib.dump(model, "model.joblib")
loaded = joblib.load("model.joblib")
print(loaded.predict(X[:3]))

Szybkie sprawdzenie

Dlaczego metodę scaler.fit() należy wywoływać tylko dla danych treningowych, a nie dla danych testowych?

Podsumowanie

scikit-learn zapewnia jednolity interfejs API: fit() trenuje, predict() wykonuje predykcję, a transform() przeprowadza wstępne przetwarzanie. Do łączenia kroków należy używać Pipeline. Dane należy dzielić za pomocą train_test_split, oceniać modele za pomocą cross_val_score, a hiperparametry dostrajać za pomocą GridSearchCV.

Często zadawane pytania

Czy lekcja „API scikit-learn: fit, transform, predict” jest bezpłatna?

Tak — pełny tekst „API scikit-learn: fit, transform, predict” 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 „API scikit-learn: fit, transform, predict”?

Proszę zrozumieć interfejs estymatora oraz schemat podziału na zbiór treningowy i testowy. Ć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 1 z 4.

Ile czasu zajmuje lekcja „API scikit-learn: fit, transform, predict”?

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